원래는 Actor 컴포넌트로 캐릭터에 붙일 생각을 했는데, 그럼 캐릭터의 생명주기를 따라가서 안될 것 같다는 생각을 함
그럼 어떻게 해야할까?
→ GameInstance Subsystem 을 쓴다면?
→ LocalPlayer Subsystem 을 쓴다면?
수명이 관리되는 자동 인스턴싱 클래스
즉, 프로그래머가 직접 인스턴스를 생성 및 관리하지 않아도 엔진이 알아서 인스턴싱하고 생성 및 소멸을 관리한다는 것
UGameInstaneSubsystem을 상속한 UMyGameInstanceSubsystem을 구현했다면
게임 전체적으로 공유되어야 할 땐 UGameInstance를 사용하고, 특정 기능만을 포함할 땐 UGameInstanceSubsystem을 사용하면 좋을 듯
| GameInstance Subsystem | LocalPlayer Subsystem |
|---|---|
| 게임 전체에 걸쳐 하나의 인스턴스 | 각 로컬 플레어어마다 인스턴스 |
| 게임 시작부터 종료까지 유지 | 플레이어 접속부터 로그아웃까지 유지 |
| 게임 전체 상태 관리에 적합 | 플레이어 별 상태 관리에 적합 |
| 모든 플레이어가 공유하는 데이터/시스템 | 개별 플레이어에 특화된 데이터/시스템 |
| 서버와 클라이언트 모두에서 접근 가능 | 클라이언트 측에서만 접근 가능 |
결론 : LocalPlayer Subsystem으로 룬 시스템을 구현해야 할 듯