Make Unreal REAL.
article thumbnail
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
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그