Unreal engine 4 게임개발, Sword RPG, 아이템과 인벤토리 - 3

아이템과 인벤토리 - 3


저번 포스트까지 최소한의 인벤토리 기능을 구현하는 블루프린트를 만들었습니다.

이제 위젯으로 만들어야하는데
동영상에서는 인벤토리 슬롯 위젯을 먼저 만들고 인벤토리 위젯을 만듭니다. 
같은 순서로 이번 포스트에서는 인벤토리 슬롯 위젯을 만들어보겠습니다. 

https://www.youtube.com/watch?v=8Osr1UsuEvA&list=PLmKKTERcjTPKEPl0nk48Tpmj-iWmzqo_Q&index=6

보고 따라하는 동영상의 링크입니다.


Widgets 폴더에 이름이 InventorySlot 인 블루프린트 위젯을 만들어줍니다.


오른쪽 위 그래프 레이아웃을 Desired on Screen으로 설정하고
위젯에 Size Box를 끌어다 놓은 후 너비와 높이를 64로 합니다.

Desired on Screen은 위젯들이 게임 화면에 어떤 크기로 나타나는지 보여줍니다.
Size Box는 원하는 크기로 조정 가능한 위젯으로 인벤토리 슬롯의 틀을 만들기 위해 가져다놓았습니다.


Size Box안에 Canvas Panel을 놓고 그 안에 Button을 놓습니다.
Button은 가득 찬 앵커로 설정하고 오프셋을 모두 0으로 해서 Size Box를 가득 채웁니다.


이름을 SlotButton으로 바꾸고 눌렀을 때나 커서를 갖다 댈 때 색깔을 다르게 합니다.


Image를 SlotButton 안에다 놓고 이름을 ItemIcon으로 합니다.
설정을 해서 슬롯을 가득 채워주고 Visibility는 Hidden으로 합니다.
슬롯에 아이템이 있어야만 아이템 아이콘이 보이는 설정을 나중에 할겁니다.


Text를 SlotButton 안에다 놓습니다. 'Can be Stacked?'가 True인 아이템의 수량을 표시하기 위해 만들었습니다. 앵커는 오른쪽 아래에 놓고 위치를 조정하고 아이템 아이콘의 앞에 있어야하므로 ZOrder를 1로 해줍니다. 슬롯에 아이템이 없거나 쌓이는 아이템이 없으면 보이지 않아야하므로 역시 Visibility를 Hidden으로 합니다.


이제 이벤트 그래프로 가 기능을 만듭니다.
Integer인 SlotIndex를 추가하고 '인스턴스 편집가능', '스폰시 노출'에 체크합니다.


Inventory Reference를 만들고 '인스턴스 편집가능', '스폰시 노출'에 체크합니다.


Item Info를 만듭니다.


아이템의 양을 나타낼 Integer, Amount를 만듭니다.


이벤트 그래프에 만든 슬롯 업데이트 기능입니다. BP_Inventory에서 Add Item이 실행되면 해당 배열의 정보는 바뀌지만, 인벤토리에서 그 변화를 눈으로 확인하려면 위와 같은 기능을 만든 후 적절한 때(아이템을 습득할 때, 사용할 때 등) 실행시켜야합니다.


Custom이벤트 SlotUpdate로 시작합니다.
Inventory Reference를 가져와 저번에 만들어뒀던 Is Slot Empty?를 사용하여 분기를 만듭니다.


확인한 슬롯이 빈 경우입니다. 아예 아이템이 없으므로 Set Is Enabled로 Slot Button을 사용할 수 없게 합니다. Item Icon도 Hidden으로 합니다.


확인한 슬롯에 아이템이 있는 경우입니다. Set Is Enabled로 Slot Button을 활성화시킵니다. 그 다음 Slot Index를 끌어와 Get Item Info at Index로 슬롯의 Item Info와 Amount를 정해줍니다. 마지막으로 어떤 아이콘을 사용할지 정하고 아이콘의 In Visibility를 Hit Test Invisible(상호작용 없이 보여주기)로 설정합니다.


Text에 바인딩을 생성해줍니다. 아이템의 수를 표시하는 함수를 만들겁니다.


만들었습니다. Amount를 String으로 전환하고 Append로 x와 붙여 출력합니다.


Visibility에 바인딩을 생성해줍니다. TextAmount가 언제 보일지 결정하는 함수를 만듭니다.


Is Slot Empty?로 분기를 만듭니다. 만약 슬롯이 비었다면 Visibility를 Hidden으로 해줍니다. 슬롯이 차있다면 아이템이 여러 개 쌓일 수 있는지 확인합니다. 체력 물약처럼 쌓이는 아이템이라면 Hit Test Invisible으로, 지도나 마법의 반지처럼 쌓일 수 없는 아이템이라면 Hidden으로 해줍니다.

이렇게 인벤토리 슬롯 위젯을 완성했습니다.
다음 포스트에서는 영상을 보고 인벤토리 위젯을 만들어보겠습니다.

댓글