내일배움캠프 14일차 TIL
📌 오늘의 상황
오늘은 몬스터 전투 후 드롭 아이템이 인벤토리에 정상적으로 저장되지 않는 문제와,
팀원이 만든 포션 사용 로직을 실제 인벤토리 시스템과 연동하는 작업을 진행했다.
둘 다 겉보기엔 간단해 보이지만, 내부 로직이 엮여 있어서 생각보다 시간이 꽤 걸렸다.
📌 트러블슈팅 로그
인벤토리에 아이템이 누적되지 않는 문제
문제 상황
전투 후 몬스터가 아이템을 드롭하면 player.Inven.AddItem()을 호출해 인벤토리에 넣었는데, 같은 아이템이 누적 수량이 증가하지 않고 계속 별도로 추가되어 "소형 포션", "소형 포션" 식으로 여러 개가 생기는 걸 발견했다!!
처음엔 드롭 잘 되네~ 하고 만족했지만, 보상 화면과 인벤토리 출력을 다시 보니 동일한 아이템이 따로따로 존재하는 이상한 상황이었다,,
원인 분석
- 기존 AddItem() 메서드는 그냥 items.Add(item)만 호출하고 있었다.
- 아이템이 기존에 있는지 검사하지 않았기 때문에, 동일한 이름의 아이템도 그냥 새로 추가되고 있엇다.
해결
AddItem() 로직 수정하였다.
- item.Id기준으로 기존 아이템 존재 여부 확인
- 존재하면 item.Count만 증가시키고
- 없을 경우에만 리스트에 새로 추가
public void AddItem(Item item)
{
var existingItem = items.FirstOrDefault(i => i.Name == item.Name);
if (existingItem != null)
{
existingItem.Count += item.Count;
}
else
{
items.Add(item);
}
}
이제야 인벤토리에 "소형 포션 x3"처럼 정상적으로 누적되는 모습이 나왔다.
포션 사용 로직이 인벤토리와 연동되지 않음
문제 상황
팀원이 전투 중 포션 사용 기능을 구현했지만, 실제 인벤토리에 있는 포션과 연결되지 않아 임의로 아이템을 사용할 수 있었고, 사용해도 인벤토리에서는 빠지지 않는 상황,,
원인 분석
- 포션 선택 화면은 인벤토리를 참조하지 않고 임의로 그냥 고정된 목록에서 선택하게 되어 있었다.
- 심지어 선택한 포션을 사용해도 RemoveItem() 같은 처리가 없어서 인벤토리와 전혀 연결되지 않았다.
해결
- 인벤토리에서 Type == ItemType.Potion인 아이템만 필터링하여 포션 리스트 구성
- 실제 선택된 포션 아이템을 사용한 후 인벤토리에서 제거 처리
// 포션 리스트 구성
var healItems = player.Inven.GetAllItems().Where(i => i.Type == ItemType.Potion).ToList();
// 포션 사용
player.Recovery(selectedPotion.StatPoint);
player.Inven.RemoveItem(selectedPotion);
이제 인벤토리에서 실제 있는 포션만 보이고, 사용하면 수량도 깔끔하게 줄어든다.
💭 느낀 점
- 인벤토리는 단순한 리스트가 아니다. 데이터 흐름의 허브라고 느꼈다.
- 수량 누적이나 제거 같은 사소해 보이는 로직도 게임 전체 흐름에 큰 영향을 준다.
- 팀원이 작성한 로직을 무조건 믿기보다는, 입출력 기준으로 직접 확인하고 연동 구조를 다시 설계하는 과정이 필요하다.
(중요하지만 너무 힘들고,, 귀찮고,, 할 일이 너무 많아요,,)
🔑 기억 포인트
| 트러블 종류 | 원인 | 해결 방법 |
| 아이템 누적 안 됨 | 기존 아이템 검사 없이 새로 추가함 | Name 기준 중복 확인 후 수량만 증가 |
| 포션 연동 실패 | 인벤토리를 참조하지 않고 UI 구성, 제거 처리 누락 | 인벤토리에서 필터링 및 RemoveItem() 호출 |
| 인벤토리 출력과 실제 데이터 불일치 |
UI와 데이터 흐름이 따로 놀고 있었음 | 로직을 인벤토리 중심으로 재설계 |

'TIL' 카테고리의 다른 글
| 좋은 코드란 뭘까? (0) | 2025.04.28 |
|---|---|
| 전투 시스템 리팩토링 (0) | 2025.04.25 |
| 인벤토리와 전투 후 드롭 시스템 통합 (0) | 2025.04.23 |
| Git 브랜치 전환 & 충돌 해결 (0) | 2025.04.22 |
| TextRPG 팀 프로젝트 기획 & 협업 환경 세팅 (0) | 2025.04.21 |