UMG 8

[언리얼 C++] UMG와 UI - 위젯 인터렉션 C++로 제작하기

1. 위젯 블루프린트 생성 위젯 인터렉션을 제작하기 위해서 먼저 위젯 블루프린트를 생성해 줘야 합니다. 위젯 블루프린트 생성은 (UMG와 UI - Viewport에 위젯 띄우기) 글을 참고하시면 됩니다. 2. 위젯 블루프린트 꾸미기 위젯 블루프린트 클래스를 생성하고 더블클릭하면 블루프린트 디자이너 창이 열리며, 여기서 메뉴 레이아웃을 만들 수 있습니다. 언리얼 엔진에서 여러가지 공용 위젯들을 제공해주는데, 예제에선 버튼과 텍스트 블록을 배치해 보았습니다. 그런 다음 블루프린트의 클래스 세팅에서 C++ 클래스를 부모 클래스로 지정해주었습니다. (UMG와 UI - Viewport에 위젯 띄우기) 글에서와 마찬가지로 UIMainHUD 클래스를 부모 클래스로 지정해주었습니다. 3. 위젯 인터렉션 제작하기 cla..

[언리얼 C++] UMG와 UI - Viewport에 위젯 띄우기

1. 모듈 추가 PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" }); PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 언리얼 엔진에서 UMG와 인터페이스를 사용하기 위해서 일단 프로젝트의 Build.cs 파일에서 위에 해당하는 모듈들을 추가해 줘야 합니다. 2. 위젯 블루프린트 생성 유저 인터페이스 카테고리에서 위젯 블루프린트 클래스를 찾을 수 있습니다. 해당 블루프린트 클래스를 생성하고 더블클릭하면 블루프린트 디자이너 창이 열리며, 여기서 메뉴 레이아웃을 만들 수 있습니다. ..

UE4 생존게임 제작 - 16 (각종 UI 제작)

1. 아이템 설명 텍스트 창 제작 위젯 블루프린트를 생성한 후, 간단하게 아이템 설명 텍스트 창을 꾸며주었습니다. 그리고 나서 전에 만들어두었던 인벤토리 아이템 위젯에 붙여주었습니다. 이때, 아이템 설명 텍스트 창은 Collapsed(안보이는 상태)로 설정하였습니다. 사용자가 아이템에 마우스를 올렸을 때만 보이는 상태로 해줄 것입니다. void UInventoryItem::NativeTick(const FGeometry& MyGeometry, float InDeltaTime) { Super::NativeTick(MyGeometry, InDeltaTime); // 마우스를 아이템에 올려놓았을 때, 아이템 설명 텍스트 창 보이게 설정 if (BackImage->IsHovered() || NameText->I..

UE4 생존게임 제작 - 15 (UI 제작 및 다양한 사운드 처리)

1. 화살 개수 UI 제작 먼저 UMG를 생성한 후, 화살 아이콘과 현재 화살의 개수와 가지고 있을 수 있는 화살의 최대수를 나타내는 TextBlock으로 위젯 블루프린트 클래스를 꾸몄습니다. public: UPROPERTY(VisibleAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = "true")) class UTextBlock* ArrowNum; UPROPERTY(VisibleAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = "true")) class UTextBlock* ArrowNumMax; void UUIArrowState::NativeConstruct() { Super::Native..

UE4 생존게임 제작 - 13 (아이템 제작창 제작)

1. 아이템 제작창 UMG 생성 아이템 제작창 또한 인벤토리처럼 List View를 이용하여 제작하였습니다. 그래서 UMG를 제작하는 과정은 생략하도록 하겠습니다. 2. 아이템 제작창 키 입력 추가 프로젝트 세팅에서 아이템 제작창을 열기 위한 키 입력을 추가하였습니다. PlayerInputComponent->BindAction(TEXT("OpenRecipe"), EInputEvent::IE_Pressed, this, &APlayerSurvivor::OpenRecipe); 그 다음 플레이어의 입력을 감지하는 SetupPlayerInputComponent 함수에서 액션 매핑을 통해 실행될 함수를 등록해주었습니다. // 제작창을 여는 함수 void APlayerSurvivor::OpenRecipe() { if..

UE4 생존게임 제작 - 12 (인벤토리 UI, 아이템 및 아이템 사용 효과 제작)

1. 인벤토리 UMG 생성 List View를 이용하여 인벤토리를 제작해볼 것입니다. List View의 UI를 만들때에는 두개의 UMG가 필요한데, 목록을 가지고 있을 List View UMG와 목록 안에 항목들을 표현할 UMG가 필요합니다. 그리고 인벤토리에 들어갈 항목들의 데이터를 가지고 있을 UObject 타입의 클래스 또한 필요합니다. 일단 두개의 UMG와 데이터를 담고 있을 클래스를 만들어주었습니다. InventoryItem 위젯 블루프린트의 클래스 세팅에서 구현된 인터페이스에 User Object List Entry라는 것을 추가해줘야 합니다. 이걸 추가해줘야 Inventory 위젯 블루프린트에서 InventoryItem 위젯 블루프린트를 인식하고 불러올 수 있습니다. 2. Inventory..

UE4 생존게임 제작 - 8 (시작 화면 UI 제작)

1. Start 레벨 생성 Start 레벨을 생성해주고 프로젝트 세팅의 맵&모드에서 에디터 시작 맵과 게임 기본 맵을 Start 레벨로 설정하였습니다. 2. 위젯 블루프린트 제작 위젯 블루프린트를 만들고 캔버스 패널 안에 이미지와 버튼 2개를 넣었습니다. 그리고 이미지를 캔버스 패널 크기로 설정하여 전체 화면에 꽉 차도록 만들었습니다. 버튼은 Style 카테고리를 통해 버튼에 이미지를 입히고 사운드를 적용할 수 있습니다. 전체 캔버스 패널의 모습입니다. 3. C++ 위젯 클래스 제작 위젯 블루프린트의 부모 클래스로 줄 C++ 위젯 클래스를 생성하였습니다. C++ 위젯 클래스를 만드는 이유는 버튼을 눌렀을 때의 동작을 코드로 지정해주기 위함입니다. protected: UPROPERTY(VisibleAnyw..

UE4 생존게임 제작 - 7 (몬스터 공격 충돌 시스템 및 플레이어 상태 UI 제작)

1. 몬스터 공격 충돌 시스템 제작 UI를 제작하기 전에 플레이어의 피가 감소하는 모습을 보기 위해서 몬스터 공격 충돌 시스템을 먼저 제작하도록 하겠습니다. 몬스터 공격 충돌 시스템은 플레이어 충돌 시스템과 거의 유사합니다. protected: UPROPERTY(Category = Collision, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) UBoxComponent* AttackBox; 먼저 콜리전 세팅에서 AnimalAttack 채널과 프로파일을 만들었습니다. 그리고 나서 해당 프로파일을 적용할 박스 컴포넌트를 생성하였습니다. AttackBox->SetupAttachment(GetMesh(), TEXT("LION..