본문 바로가기
TIL

인벤토리와 전투 후 드롭 시스템 통합

by vvin39 2025. 4. 23.

내일배움캠프 13일차 TIL

📌 오늘의 상황

오늘은 팀원이 구현한 MonsterItemDrop.MonsterDrops() 메서드를 기반으로, 내가 직접 작성한 플레이어 인벤토리 시스템과 통합하는 작업을 진행했다.
목표는 다음과 같았는데,

  1. 전투 종료 후 MonsterDrops()로부터 드롭된 아이템을 받아
  2. player.Inven.AddItem()을 통해 내 인벤토리에 반영하고
  3. 드롭된 골드도 플레이어 소지 골드에 더하며
  4. UIManager를 통해 드롭 결과를 출력

📌 트러블슈팅 로그

DropResult 클래스 접근 오류

문제 상황

MonsterItemDrop.MonsterDrops() 메서드가 DropResult 타입을 반환하지만, 외부에서

DropResult result = dropper.MonsterDrops(...);

이렇게 선언했더니 DropResult를 찾을 수 없다는 오류가 발생했다.

원인 분석

DropResult 클래스는 MonsterItemDrop 클래스 내부에 중첩 클래스로 정의되어 있었기 때문에, 외부에서는 반드시 MonsterItemDrop.DropResult로 접근해야 했던 것!

해결

MonsterItemDrop.DropResult result = dropper.MonsterDrops(monsterLv);

이렇게 정확히 명시해줌으로써 해결했다.

 

UIManager에서 드롭 결과 출력 불가

문제 상황

전투 후 UIManager.DisplayDrops(Monster target)을 호출해 드롭 내용을 출력하고자 했지만, result가 전달되지 않아 출력할 드롭 정보를 접근할 수 없었다.

원인 분석

MonsterDrops()의 반환값 DropResult result는 전투 내부의 지역 변수였고, UIManager 쪽에는 전달되지 않고 있었음,,

해결

UIManager.DisplayAttackResult()의 시그니처에 DropResult를 추가

UIManager.DisplayAttackResult(Monster target, MonsterItemDrop.DropResult result);

그리고 내부에서 다시 DisplayDrops(result)로 출력 처리해서 해결!

 

드롭된 골드 반영 누락

문제 상황

드롭된 아이템은 인벤토리에 정상적으로 들어가지만, 골드는 플레이어에게 반영되지 않고 있었다.

원인 분석

드롭 처리 로직에서 player.Stats.Gold += ... 처리가 빠져 있었음

해결

골드 반영 구문 추가를 통해 해결

player.Stats.Gold += target.Stats.goldDrop;

 

최종 처리 코드 요약

//몬스터 처리시 랜덤으로 아이템 드롭
var dropper = new MonsterItemDrop();
MonsterItemDrop.DropResult result = dropper.MonsterDrops(target.Stats.Lv);

foreach (var item in result.DroppedItems)
{
	player.Inven.AddItem(item); //드롭된 아이템 인벤토리에 추가
	player.Stats.Gold += target.Stats.goldDrop; //드롭된 골드 소지골드에 추가
}
//공격 결과 출력
UIManager.DisplayAttackResult(target, result);

 

💭  느낀 점

  • 중첩 클래스 접근 방식은 외부에서 사용할 경우 반드시 명확히 경로를 작성해야 오류를 피할 수 있다.
  • 게임 시스템은 출력/로직/데이터가 서로 엮여 있으므로 데이터 전달 경로를 일관성 있게 설계해야 한다.
  • 다른 팀원의 코드와 통합할 때는 타입 구조와 반환값을 정확히 파악하는 것이 중요하다.

.

🔑  기억 포인트

트러블 종류 원인  해결방법
DropResult 접근 오류 중첩 클래스 외부 접근 시 경로 미지정 MonsterItemDrop.DropResult로 명시 선언
UI 출력 연동 실패 드롭 결과를 UI에 전달하지 않음 DropResult를 함께 전달
골드 반영 누락 드롭 결과에 골드 처리 누락 수동으로 += 처리
통합 작업 시 데이터 충돌 다른 팀원의 반환값 구조를 명확히 파악하지 않음 반환 타입과 사용 위치를 꼼꼼히 분석

 

 

 

 

최근댓글

최근글

skin by © 2024 ttuttak