본문 바로가기
[ Unreal5 ]/- 언리얼엔진5 실습

언리얼엔진5 Inventory DataTable save

by MRG 2024. 5. 6.
728x90
반응형

 

 ▣ 먼저 Blueprint Structure 두 개를 생성합니다. 

FItemData는 아이템 데이터를 관리하는 구조체이고 

FSlot 저장할 아이템 이름과 아이템 수에 관한 구조체입니다. 

 

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/blueprint-variables-in-unreal-engine?application_version=5.3

 

언리얼 엔진의 블루프린트 변수 | 언리얼 엔진 5.4 문서 | Epic Developer Community

값을 가지거나 월드 내 오브젝트나 액터를 참조하는 프로퍼티입니다.

dev.epicgames.com

 

 

 

▣ 아이템에 ItemData를 반환하기 위한 블루프린트 인터페이스를 생성합니다. 

생성한 블루프린트 인터페이스로 가서 Add로 함수를 추가하고 Output에 변수를 추가하고 FItemData형식으로 데이터를 반환하는 함수를 완성합니다. 

 

▣ 블루프린트 인터페이스는, 블루프린트에서 유형이 다른 타깃 블루프린트의 함수도, 같은 인터페이스를 구현하기만 한다면 호출할 수 있도록 해 줍니다.

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/implementing-blueprint-interfaces-in-unreal-engine?application_version=5.3

 

언리얼 엔진에서 블루프린트 인터페이스 구현하기 | 언리얼 엔진 5.4 문서 | Epic Developer Community

블루프린트 인터페이스는, 블루프린트에서 유형이 다른 타깃 블루프린트의 함수도, 같은 인터페이스를 구현하기만 한다면 호출할 수 있도록 해 줍니다.

dev.epicgames.com

 

 

 

▣ 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로 추가하여 아이템 리스트를 완성합니다.
게임에 존재하는 아이템 데이터를 관리하기 위함입니다.

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/data-driven-gameplay-elements-in-unreal-engine?application_version=5.3

 

언리얼 엔진의 데이터 기반 게임플레이 엘리먼트 | 언리얼 엔진 5.4 문서 | Epic Developer Community

외부 저장 데이터를 사용하여 게임플레이 엘리먼트를 구동합니다.

dev.epicgames.com

 

 

▣ AC_Inventory에 가서 FindItemSlot함수를 추가하고 함수 안에 충돌한 아이템에 Name이 ItemSave 배열에 어디에 존재하는지 찾아서 Index에 값을 반환하는 함수를 완성합니다. 

 

 

 

 

▣ AddItem함수를 추가하고 함수 안에 ItemSave에 충돌한 아이템이 존재하는지 아닌지에 대한 여부에 따라 존재하면 Find Item Slot함수를 호출하고 아니면 ItemSave에 배열을 추가하고 아이템을 추가하고 저장하는 노드와 Inventory Slot Size 크기를 빼기 하는 가방에 크기를 하나 줄이는 노드를 완성합니다. 

 

 

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Blueprints/UserGuide/Sets/SetNodes/ContainsItem/

 

Contains Item

세트에 아이템이 들어있는지 검사합니다.

docs.unrealengine.com

 

 

 

▣ Inventory Actor Component에서 아이템을 획득하는 Input 노드에 Sphere Trace를 발사하여 아이템을 획득하는 Trace 노드를 완성하고 Hit Actor 인터페이스를 호출하고 데이터테이블에 이름과 Row Name이 존재하면 AddItem을 호출하고 Actor 삭제하는 노드를 완성하고 아니면 Data Table에 존재하지 않습니다를 출력하는 노드를 완성합니다. 

 

 

https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Utilities/GetDataTableRow?application_version=5.3

 

Get Data Table Row | Unreal Engine 5.4 Documentation | Epic Developer Community

Get Data Table Row

dev.epicgames.com

 

 

 

▣ 컴파일 저장 후 플레이를 해서 아이템을 두 개 다 획득하면  ItemSave에 Rifle에 ItemCount가 2개가 된 걸 확인할 수 있습니다. 

728x90
반응형

댓글