Make Unreal REAL.
article thumbnail
실제 체력과 UI 연동

이득우의 언리얼 C++ 게임 개발의 정석 UI를 다루는 방법도 애니메이션을 다룰 때 C++로 Anim Instance를 제작해 로직을 담당하고 그것을 상속 받은 애니메이션 블루프린트에서 설계 작업을 했던 것과 비슷하다. C++로 User Widget을 제작해 로직을 담당하고 위젯 블루프린트에서 그것을 상속 받아 꾸미거나 추가적인 작업을 할 수 있다. UI_HPBar 위젯 블루프린트를 먼저 만들어 놓았으므로 User Widget C++ 클래스를 제작해 부모로 지정하는 방식으로 진행한다. UUserWidget을 상속 받은 ABCharacterWidget 클래스를 만든다. 공격력, HP 등 레벨에 해당하는 캐릭터의 스탯을 관리하는 ABCharacterStatComponent에서 델리게이트를 하나 선언한다. H..

article thumbnail
체력바 UI 위젯 띄우기

이득우의 언리얼 C++ 게임 개발의 정석 언리얼 엔진은 액터에 UI 위젯을 부착할 수 있도록 UWidgetComponent 컴포넌트를 제공한다. 언리얼 C++에서 Widget 컴포넌트를 사용하기 위해서는 UMG 모듈을 프로젝트에 추가해야 한다. {프로젝트명}.Build.cs 파일에서 "UMG" 모듈을 추가한다. 언리얼 빌드 툴(Unreal Build Tool)은 언리얼 C++ 프로젝트를 관리한다. UBT가 Build.cs 파일을 분석해 컴파일 설정을 조정했기 때문에, UMG 모듈의 헤더 파일 경로도 바로 쓸 수 있도록 기본 경로로 설정된다. UMG 모듈은 UE4 프로젝트 내의 Source > Runtime > UMG 폴더에 위치한다. 캐릭터 클래스에 위젯을 추가해본다. Widget 컴포넌트를 사용하기 위..

article thumbnail
체력바 UI 위젯 제작

이득우의 언리얼 C++ 게임 개발의 정석 체력바로 사용할 UI_HPBar 위젯 블루프린트를 만든다. 스크린 모드를 Fill Screen에서 Custom 150 x 50으로 바꾼다. 편집 화면이 어떻게 보일지 설정할 뿐이지 UI의 크기나 비율을 바꾸는 것은 아니다. Fill Screen: 전체 스크린 크기 Custom on Screen: Custom 크기에 전체 화면 가이드를 표시 Desired: 위젯 크기에 맞춤 Desired on Screen: 위젯 크기에 맞추고 전체 화면 가이드를 표시 기본적으로 있던 Canvas Panel을 지우고 Vertical Box의 자식으로 Spacer와 Progress Bar를 배치한다. Canvas Panel의 자식으로 등록되면 앵커, 피벗, 크기 등을 조정할 수 있게 ..

article thumbnail
액터 컴포넌트로 HP 관리

이득우의 언리얼 C++ 게임 개발의 정석 현재 데미지는 캐릭터의 TakeDamage() 함수에서 직접 처리하고 있다. ABCharacterStatComponent에 SetDamage() 함수를 만들고 캐릭터의 TakeDamage()에서 이를 호출하는 방식으로 변경해보겠다. 캐릭터는 데미지를 입으면 액터 컴포넌트의 SetDamage()를 호출해야 한다. 액터 컴포넌트는 HP가 0이 되면 캐릭터에게 알려야 한다. 컴포넌트가 캐릭터에 의존성을 가지지 않도록 델리게이트를 사용하도록 한다. HP를 감소시키는 SetDamage(), 공격력을 가져오는 GetAttack(), HP가 0일 때 발동하는 OnHPIsZero 델리게이트를 선언한다. HP가 음수가 되지 않도록 Clamp하고 0이 되면 델리게이트에 등록된 함수..

article thumbnail
액터 컴포넌트로 스탯 관리

이득우의 언리얼 C++ 게임 개발의 정석 캐릭터의 공격력, HP 등을 액터 컴포넌트(Actor Component)를 만들어 관리해보도록 한다. 새로운 액터 컴포넌트 클래스를 만든다. 새로운 클래스를 생성했으니 CoreMinimal.h를 ArenaBattle.h로 변경해준다. 캐릭터 클래스에 방금 생성한 액터 컴포넌트 변수를 만든다. 헤더를 포함시키고 생성자에서 액터 컴포넌트를 생성한다. 컴파일하면 캐릭터의 Details 패널에서 액터 컴포넌트가 추가된 것을 볼 수 있다. Transform을 갖는 Scene Component가 아니기 때문에 Root Component가 아닌 액터에 직접 부착된다. 액터 컴포넌트에서는 매 Tick마다 처리해야 할 로직이 없으므로 Tick을 끄도록 한다. 액터에서 컴포넌트들을..

article thumbnail
게임 인스턴스와 데이터 테이블

이득우의 언리얼 C++ 게임 개발의 정석 캐릭터나 아이템의 스텟 등은 게임의 기반을 이루는 변하지 않는 데이터이므로, 보통 게임 어플리케이션이 초기화될 때 불러들인다. 언리얼 엔진은 게임 어플리케이션을 관리하기 위한 용도로 게임 인스턴스(Game Instance)라는 언리얼 오브젝트를 제공한다. 데이터 테이블은 효과적으로 테이블(표) 데이터를 관리하기 위해 언리얼 엔진에서 제공하는 오브젝트이다. 콤마(,)로 구분된 csv 파일을 읽어들일 수 있다. 게임 인스턴스가 데이터 테이블을 통해 캐릭터나 아이템의 스텟을 관리하도록 설계하면, 게임 어플리케이션이 초기화될 때 데이터를 불러들이며 종료될 때까지 보존된다. 새로운 게임 인스턴스를 만든다. 기본 목록에 없으므로 직접 검색해서 선택해야 한다. Game Mod..

검색 태그