인벤토리 시스템 시행착오

FGPRJS·2022년 5월 1일
0

구현되어 있는 인벤토리 시스템

  • 노출되어 있는 아이템
  • 인벤토리에 있는 아이템

지금까지 시도하였던 것

  • 아이템 자체에 모델, Image를 모두 포함한다.
  • 따라서 아이템을 획득하더라도 노출되어 있는 아이템 객체를 파괴하거나 하지 않고, 그 GameObject를 그대로 사용한다.

문제점

  1. 인벤토리에 있어도 Scene에는 그 Model이 남아있다. (SetActivate(false)만 하였기 때문 -> Destroy 해버리면, 한 쪽이 비어있는 상태가 되므로 NullException 발생 가능)
  2. Item 객체가 파괴된 것이 아니기 때문에 Inventory를 소지한 Mecha가 파괴될 때 모든 Item을 전부 직접 파괴해 주어야 한다. 파괴하지 않으면, 참조할 수 없어 Memory Leak된다.
  3. Stack이 있는 아이템(중첩이 가능한 아이템)의 경우, 기존 아이템에 Stack추가를 하려면 기존 아이템은 제거(파괴)해야 한다. 그렇게 되면 AItem은 더 이상 데이터가 존재하지 않게 되고, 참조에 오류가 발생한다.

변경목표

  • ItemModel을 따로 작성하여 데이터만 가져온다. 원래 객체는 파괴한다.(추후 Pool로 대체한다고 하더라도, 객체의 주체를 바꾸는 행위는 하지 않을 것.)
profile
FGPRJS

0개의 댓글