프로그래밍 공부
작성일
2024. 2. 29. 13:48
작성자
WDmil
728x90

마법 스킬에 대한 위젯 인터페이스를 구현해보자.


WB_SlotMaster

 

우선, 위젯을 저장할 폴더를 생성하고, 위젯을 관리할 위젯 마스터를 생성한다.

WB_SlotMaster가 WB_Slot을 가지고, 플레이어에게 표시해준다.


WB_Slot

Slot디자인은 위와같다.

 

SizeBox->Border->Overlay->BG_Image, Image

 

로, SizeBox로 위젯 자체의 위치를 조정한다.

Border로 Overlay된 Image의 Padding의 여유분 위치를 색으로 표현한다. 이부분은 선택시 빨간색, 선택 해제시 흰색으로 표기되게 할 것 이다.

 

BG_Image는 기본 이미지의 백그라운드로, 검정을 베이스로 선택 디자인한다.

Item_Image는, 아이템의 이미지를 표현함으로, 아이템 자체의 RGBA의 Texture를 가진다.

 

이미지 사이즈 자체를 조정하기 위해서는 Selected_Border의 사이즈를 조정해주면 된다.


WB_SlotMaster

계층구조는 위와 같은 방식을 따른다.

Horizontal Box를 사용해서, 현재 해상도에 따른 Slot의 위치좌표를 동적으로 계산할 수 있도록 해준다.

 

Slot의 위치는, HorizentalBox의 위치좌표를 바꾸어, 좌상 우상 좌하 우하 의 정렬을 사용하면 된다.

이벤트 그래프를 수정하여, 현재 slot의 이미지를 다체롭게 꾸며줄 수 있다.

 

위와같이 생성시, 기본이미지를 바꾸어주어도 되고, 마법 자체에 자기자신의 Defalt이미지를 설정하고, BeginPlay시에 해당 이미지를 이 위젯에 덮어씌워주는 방식으로 사용해도 무방하다.

 

Tic마다 호출하면 효율문제가 생길 수 있으니, 아이템을 호출, 해제 또는 스왑 시 마다만 갱신여부를 확인해주고, 갱신해주면 된다.

 

선택 여부를 표현해준다.

커스텀 이벤트의 호출 시, 아이템 배열을 순환하여, 지정된 위치의 아이템과 같아졌을 때, 슬롯의 컬러를 바꾸어주면 된다.

 

위와같이 for문으로 순환하는것 외에도, 현재 지정된 아이템 슬롯을 따로 변수로 저장해놓은 다음에, 선택된 슬롯의 백그라운드 여부를 수정해주어도 무방하다.

 

아예 스킬이 스스로의 아이콘을 가지게 하고, SlotMaster는 해당되는 슬롯 이미지를 표현해주는 역할만 해주어도 될 것이다.

 


BP_Wizard

 

BP_Wizard에서 마법의 스왑을 관리함으로, Wizard에서 스왑 시 아이템의 활성화 여부를 관리한다.

 

코드의 캡슐화를 유지하기 위해, BP_Player에 WIzard_WIget의 활성화 여부를 확인해주는 커스텀 이벤트를 생성해주어도 무방하다.

 

이런 경우 외에도, 그냥 UI자체를 각 Weapon마다 할당시켜놓고, 해당되는 UI를 표현하게 해주어도 무방할것 같다.

기본 DefaltUI를 만들어놓은 다음에, 그 UI를 표현하다가. 바뀌는 UI가 생길 경우, 오버라이드 된 UI커스텀 이벤트가 실행되게 바꾸어도 더 효율적으로 코드를 중복사용을 예방하면서 짤 수 있다.

 

위와같이 BP_Wizard의 스왑 시 마다 BP_Player의 WIget 변환커스텀 이벤트를 실행시켜준다.

마법이 선택될 떄, UI를 활성화 하고 비활성화 해주는 함수를 실행해준다.

 

지금 당장은 형변환을 사용하지만, UI를 Wizard가 가지게 작동시킨다면, 이런 상황은 발생하지 않을 것 이다.


테스트

 

 

728x90