- 문제 기능 : ObjectPoolManager
- 문제개요
- 오류 상황: ObjectPool로 관리중인 오브젝트 사용시 오브젝트의 Mesh가 렌더링되지 않는 현상 및 Hit Event 물리기능 미작동
- 발생 배경: 무기를 사용하여 ProjectileObject를 Get하여 사용할 때 발생
- 원인 분석
- 오류 원인: Object를 관리하는 ObjectPoolManager를 Actor 또는 ActorComponent를 상속시켜 사용하면 Level 이동시 파괴되는 이유로 SubSystem을 상속시켜 사용함.
- 구조적 이해:
- 렌더링 문제: 렌더링은 UPrimitiveComponent가 Scene에 등록되어야 동작함 => SubSystem 내부에서 RegisterComponent()가 호출되지 않아 렌더 파이프라인에 연결되지 않음
- Physics 문제: SubSystem은 UWorld의 물리 시뮬레이션 컨텍스트에 직접 연결되지 않아 Physics가 작동하지 않음.
- Physics는 World에 등록된 BodyInstance 기반으로 작동함 => UPrimitiveComponent가 UWorld에 등록되지 않아 Collision과 PhysicsSimulation이 시작되지 않음
- 해결책
- ObjectPoolManager가 상속받는 부모를 Actor 또는 ActorComponent로 변경
- 교훈 및 주의사항
- 배운점: 보통 사용하지 않는 방식으로 기능을 구현하고 싶다면, 보통의 방식을 사용하는 이유를 잘 파악하고 구현할 것.