✅ 학습 내용
- PlayerInventoryController 클래스 내에서 items 리스트는 inventoryItems 리스트와 중복되는 데이터라는 사실을 파악함.
- items는 ItemSlot 내부의 item과 1:1로 연결되어 있어, 모든 기능을 inventoryItems만으로 구현 가능.
- 불필요한 리스트(items)는 메모리 낭비 및 유지보수 부담을 야기할 수 있으므로 제거 가능.
🛠️ 리팩토링 방향
- items[index]를 전부 inventoryItems[index].item으로 변경.
- 외부에서 ItemData 목록이 필요할 경우:
-
csharp복사편집public IReadOnlyList<ItemData> Items => inventoryItems.Select(slot => slot.item).ToList().AsReadOnly();
- ItemSlot 클래스 내 item을 public ItemData Item { get; private set; } 식으로 캡슐화할 계획.
💡 느낀 점
- 구조 설계 시 중복 데이터는 가능한 줄이고, **단일 책임 원칙(SRP)**에 따라 필요한 데이터는 한 곳에서만 관리하도록 설계하는 것이 유지보수에 훨씬 유리하다.
- 데이터와 UI는 분리하되, 내부 구조는 최대한 단순하고 명확하게 가져가자.
💡 버그 수정
인벤토리에서 장착 아이템을 선택할 경우, 장착 슬롯으로 옮겨가는데 이 때 장착 아이템의 우측에 있던 아이템도 함께 지워지는 문제가 발생
-> 아이템 슬롯을 클릭할 때와 장착 아이템을 선택했을 때 로직이 모두 해당 아이템을 지우도록 호출되어서 생긴 문제(장착 함수에서 당연하게도 선택된 아이템이 인벤토리에서 지워질 것이라는 예상에 작업한 내용이 위와 같은 문제를 발생시킨 것)
따라서 장착 함수 내에서 아이템을 지우는 코드를 제거하는 방향으로 합의
'[내일배움캠프 Unity 9기]' 카테고리의 다른 글
| 06/04 TIL 두트윈(feat. 메서드 체이닝) (1) | 2025.06.04 |
|---|---|
| 05/30 TIL SpawnManager 역할 고민, 낮/밤 사이클 전환, NavMesh SamplePosition (0) | 2025.05.30 |
| 05/28 TIL Unity 매니저 싱글톤 설계 및 Resources.Load 문제 디버깅 (0) | 2025.05.28 |
| 05/27 TIL 오브젝트 풀에 관한 고찰 (0) | 2025.05.27 |
| 05/26 TIL Unity Fusion2 / 오브젝트 풀 (0) | 2025.05.26 |