언리얼엔진/언리얼 C++

SubSystem - 아이템 매니저

season97 2024. 10. 27. 15:28

 개인적인 공부를 위해 포스팅 하는 글입니다.


 

# 아이템

데이터를 이용할수도 있지만 일단 이 포스팅에선 빨리하기 위해 이건 ㄴㄴ

-> 아이템 정보는 플레이어와 스탯 연동... 그럴라면 게임어빌리티 시스템.. 등등 고려할게 좀 많으니 일단은 간단하게만 작성해봤다, 추후 포폴만들때 제대로 해봐야겠다.

ItemInstance 클래스 생성. 오브젝트의 상속을 받는다.

 

디파인 클래스에 코드 추가

아이템의 희귀도를 정의

ㆍ Init은 데이터상에서 초기화

※ 동적으로 관리해 주기 위해 아이템을 관리해 줄 수 있는 매니저 클래스가 있으면 좋겠다...

 


# 언리얼에서 매니저 클래스를 만들려면 GameInstance Subsystem을 이용하면 된다

생명주기를 알아서 맞춰준 매니저 클래스 . 라고 한마디로 정리 가능

공식문서 링크

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

ㆍ 매니저클래스를 만들 땐 생명주기가 꼬일 여지가 있기 때문에 싱글톤보단 서브시스템을 이용하는게 좋다.

괜히 static 고집하지말고 쓰라는거 쓰자

 

ㆍ 종류가 되게 많다.. 누구와 생명주기를 맞출건데? 라는 느낌으로 받아들이면 된다.

→ 지금은 간단하게 WorldSubsystem으로 월드와 생명주기를 맞추겠다.

ㆍ 월드와 생명주기가 맞는 인벤토리를 관리해주는 매니저 역할이라고 생각하자

ㆍ 이 상속만 있으면 그냥 자동으로 생명주기가 관리된다.

 

# 동적으로 관리해줄 준비

ㆍ 위 아이템 클래스를 include를 해주고 TArray에다 어느 시점에 넣어주는 매니저 클래스를 정의. 

ㆍ매니저클래스라는건 어디선가 처음에 불러올 부분이 필요하겠다... 보통은 GameMode부분에서 불러온다고 한다.

 

#GameMode클래스

ㆍ 뭐 몬스터를 관리해주는 MonsterManager 라던가... 여러가지 상황에서 활용할 수 있겠다.

ㆍ 지금은 Item Subsystem을 잘 불러오게 된다.