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

언리얼엔진5 Inventory Save, Load, Widget

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

 

▣ 먼저 Blueprint SaveGame을 생성합니다. 

 

https://docs.unrealengine.com/4.26/ko/InteractiveExperiences/SaveGame/Blueprints/

 

블루프린트로 게임 저장하기

블루프린트를 사용하여 게임을 저장하고 로드하는 방법입니다.

docs.unrealengine.com

 

 

▣ SaveData에 저장할 배열형식애 구조체를 선택합니다. 

 

 

▣ 그리고 Blueprint에서 GameInstance를 생성합니다. 

 

 

▣ GameInstance에 들어와서 FUNTIONS를 추가하는데 Init으로 추가합니다. 

 

 

▣ Init함수는 초기화하는 함수로 처음시작하는 함수입니다.

처음에 Does Save Game Exist함수를 추가합니다.

Does Save Game Exist함수는 세이브 name에 Slot Name이 존재하는지에 대해 확인하는 함수입니다. 

 

▣ 해당 세이브 파일에 존재하면 원래 있던 세이브파일을 불러와서 다시 세팅해 주는 노드를

해당 세이브 파일이 없으면 다시 생성해서 세팅하는 노드를 완성합니다.

 

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

 

Does Save Game Exist | Unreal Engine 5.4 Documentation | Epic Developer Community

Does Save Game Exist

dev.epicgames.com

 

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

 

Load Game From Slot | Unreal Engine 5.4 Documentation | Epic Developer Community

Load Game from Slot

dev.epicgames.com

 

https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/SaveGame/CreateSaveGameObject?application_version=5.2

 

Create Save Game Object | Unreal Engine 5.4 Documentation | Epic Developer Community

Create Save Game Object

dev.epicgames.com

 

 

▣ Project Settings에 Maps & Modes에 들어가서 GameInstace를 변경합니다. 

그리고 플레이를 하면

 

 

▣ 프로젝트파일에 Saved -> SaveGames폴더에 아까 지정한 이름으로 게임세이브파일이 생성된 걸 확인할 수 있습니다. 

 

 

▣ AC_Inventory에서 SaveInventory 함수를 추가하고 세이브한 ItemSave 배열을 Save Game to Slot 함수를 활용하여 저장하는 노드를 완성합니다.

 

 

▣ LoadInventory 함수도 생성하고 Load Game from Slot함수를 활용하여 해당 세이브파일을 불러와 ItemSave에 세팅하는 노드를 완성합니다. 

 

 

▣ 그리고 AddItem함수에서 아이템 획득 시 세이브하는 함수를 호출하는 노드를 추가합니다. 

 

 

 

▣ 그런 다음에 Inventory Widget으로 가서 25개의 Inventory창과 각각 이미지, 아이템 개수를 표기할 Image, Text를 추가합니다. 드래그를 가능하게 하기 위해 각각 아이템 슬롯마다 Button형식으로 생성하고 그 위에 이미지랑 Text를 상속해서 완성합니다.

 

 

▣ Widget Graph로와서 Event Custom을 생성하고 inputs에 Item Slot 구조체를 배열형식으로 가져오게 지정합니다. 

그리고 DataTable에 존재하는 아이템이라면 첫 번째 Inventory에 아이템 이미지와 해당 아이템 개수를 추가하는 노드를 완성합니다. 

 

 

▣ 그리고 AC_Inventory에서 Wdiget을 켜주는 노드에 아까 완성한 Event를 호출하는 노드를 추가합니다. 

 

 

▣ 컴파일 저장 후 플레이하면 아이템을 획득하지 않을 때 획득 했을 때 Inventory가 추가되는 걸 확인할 수 있습니다.

728x90
반응형

댓글