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로 관리해 가져오는 데 성공했다.
'Unreal Engine > Advanced UE5 Multiplayer Programming' 카테고리의 다른 글
인벤토리 컴포넌트 (0) | 2023.05.19 |
---|---|
인벤토리 구조체 선언 (0) | 2023.05.18 |
인벤토리 구조 (0) | 2023.05.16 |
능력 간의 관계 설정 (0) | 2023.05.15 |
벽 달리기 능력 (1) | 2023.05.14 |