첫번째 방법 : 블루프린트 객체를 손에 스폰하고, 그 객체를 인벤에 넣어서 관리
여기서 문제는 총이 스왑돼서 다른 총을 보여줘야 할 때 전에 들고있던 총을 어디로 없애야하냐..?
플레이할때 보이지 않는 임의의 공간에 이 총을 잠시 파킹?해둬야하나 싶었지만 약간 찝찝한 방법이라 다른 방법을 쓰기로!
두번째 방법 : 스폰할 블루프린트 객체와 인벤에 저장할 C++ 클래스 객체를 따로 관리
이 방법의 문제는 총 클래스에서 총이 스폰된 월드값을 가져와서 총알을 스폰하는데..
C++ 클래스 객체는 월드에 스폰되지 않기 때문에 월드값을 가져올 수 없음
그래서 요거를 어떻게 해결해야하나.. 생각하다가
손의 스켈레톤 소켓에 총기를 다 넣어놓고 ㅎ.. 메쉬만 사라지게하기
또는
블루프린트 객체를 스폰하고, 총의 정보만 인벤같은 저장소에 저장해놓고 액터 destory하기
둘 중에 후자가 맞는 것 같아서 총 매니저를 만들기로함!
캐릭터에서는 보여지는 모습, 즉 블루프린트 객체를 스폰하고 Destroy하는 것에 집중하고
스왑될때 총 매니저에 업데이트 요청을 해서 바꾸기 전 총의 정보를 저장해주기로 함!
AddWeapon()
데이터만 들고있는 객체를 사용하고 싶다면 (월드에 스폰하지않고)
UObject를 상속해서 사용하는게 좋음!
UActor를 상속해서 NewObject를 호출해서 쓰면 가비지콜렉터가 제대로 작동하지 않음
OnOverlapBegin()
아이템 여러개 오버랩 됐을 때도 가능해지게
팁!
블루프린트 액터 클래스 로드할 때 데이터 테이블로 관리해야 함!
오브젝트 풀