Unreal Engine/Advanced UE5 Multiplayer Programming
인벤토리 아이템 정적 데이터
diesuki4
2023. 5. 17. 15:46
Advanced Unreal Engine 5 Multiplayer Gameplay Programming
수정할 수 없는 정적 데이터와 수정할 수 있는 런타임 데이터를 설계하는 가장 쉬운 방법은, 클래스로 만들어 CDO(Class Default Object)와 객체로 관리하는 것이다.
- 언리얼 엔진은 모든 UClass에 대해 CDO을 생성한다.
ActionGameTypes.h 헤더에 아이템의 정적 정보를 저장할 클래스를 선언하고, 우선은 이름만 저장하도록 해본다.
- 런타임 정보를 저장하는 아이템 객체에서는 정적 정보를 수정할 수 없도록 할 것이므로, EditDefaultsOnly로 설정한다.
방금 선언한 ItemStaticData 클래스를 부모로 하는 TestItem BP 클래스를 생성한다.
- 아이템 이름에 TestItem을 설정한다.
- 이제 이 아이템 이름은 아이템 객체에서 변경할 수 없다.
아이템의 정적 데이터를 가져오고자 데이터 형식에 맞는 CDO를 반환하는 헬퍼 함수를 작성하기 위해, BlueprintFunctionLibrary C++ 클래스를 생성한다.
BlueprintFunctionLibrary 클래스에 선언한 static 함수는 다른 BP 어디서나 가져다 쓸 수 있다.
- 반환할 CDO는 값을 수정할 수 없는 const이기 때문에 반환할 때도 const 키워드를 붙여준다.
ItemDataClass에 해당하는 UItemStaticData의 자손 클래스의 CDO를 UItemStaticData 타입으로 반환한다.
캐릭터 BP에서 방금 만든 Bluepring Library 함수를 이용해 TestItem 아이템의 정적 정보를 가져와 출력해본다.
- 다른 BP에서 바로 사용할 수 있다.
아이템의 정적 데이터를 CDO로 관리해 가져오는 데 성공했다.