▣ 먼저 Blueprint Structure 두 개를 생성합니다.
FItemData는 아이템 데이터를 관리하는 구조체이고
FSlot 저장할 아이템 이름과 아이템 수에 관한 구조체입니다.
▣ 아이템에 ItemData를 반환하기 위한 블루프린트 인터페이스를 생성합니다.
생성한 블루프린트 인터페이스로 가서 Add로 함수를 추가하고 Output에 변수를 추가하고 FItemData형식으로 데이터를 반환하는 함수를 완성합니다.
▣ 블루프린트 인터페이스는, 블루프린트에서 유형이 다른 타깃 블루프린트의 함수도, 같은 인터페이스를 구현하기만 한다면 호출할 수 있도록 해 줍니다.
▣ Actor Component를 생성하고 AC_Item에 들어가서 FItemData형식으로 변수를 추가합니다.
▣ 그리고 아이템블루프린트(BP_Rifle)를 하나 생성하고 ActorComponent를 추가하여 위에 이미지처럼 ActorComponent를 추가한 블루프린마다 ItemData를 각각 관리할 수 있게 됩니다.
그리고
https://www.flaticon.com/search/3?word=weapon
▣ Class Settings를 클릭하고 아까 생성한 인터페이스를 추가합니다.
그리고 인터페이스로 들어가서 ActorComponent(AC_Item)에 변수를 Get 하여 ItemData를 return 하는 노드를 완성합니다.
▣ Data Table을 하나 생성하고 FItemData를 연결하고 에디터 창에서 Add로 추가하여 아이템 리스트를 완성합니다.
게임에 존재하는 아이템 데이터를 관리하기 위함입니다.
▣ AC_Inventory에 가서 FindItemSlot함수를 추가하고 함수 안에 충돌한 아이템에 Name이 ItemSave 배열에 어디에 존재하는지 찾아서 Index에 값을 반환하는 함수를 완성합니다.
▣ AddItem함수를 추가하고 함수 안에 ItemSave에 충돌한 아이템이 존재하는지 아닌지에 대한 여부에 따라 존재하면 Find Item Slot함수를 호출하고 아니면 ItemSave에 배열을 추가하고 아이템을 추가하고 저장하는 노드와 Inventory Slot Size 크기를 빼기 하는 가방에 크기를 하나 줄이는 노드를 완성합니다.
▣ Inventory Actor Component에서 아이템을 획득하는 Input 노드에 Sphere Trace를 발사하여 아이템을 획득하는 Trace 노드를 완성하고 Hit Actor 인터페이스를 호출하고 데이터테이블에 이름과 Row Name이 존재하면 AddItem을 호출하고 Actor 삭제하는 노드를 완성하고 아니면 Data Table에 존재하지 않습니다를 출력하는 노드를 완성합니다.
▣ 컴파일 저장 후 플레이를 해서 아이템을 두 개 다 획득하면 ItemSave에 Rifle에 ItemCount가 2개가 된 걸 확인할 수 있습니다.
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 SpawnAIFromClass (0) | 2024.05.09 |
---|---|
언리얼엔진5 Mirror System (0) | 2024.05.07 |
언리얼엔진5 Inventory Widget (1) | 2024.05.06 |
언리얼엔진5 c++ CalculateDirection (0) | 2024.05.05 |
언리얼엔진5 c++ CharacterMovement (0) | 2024.05.04 |
댓글