주요 구현 내용 요약
1. 장비 장착 시스템 (EquipManager) 구축
- Equip(), EquipRight(), EquipLeft() 등으로 장비를 장착
- 같은 아이템이 양손에 장착되지 않도록 중복 체크 해제 처리
- 외형 반영: CharacterVisual.EquipWeaponRight(), EquipShieldLeft()
- 스탯 반영: ApplyTotalStats()를 통해 공격력/방어력/체력 증가
2. 장비 해제 기능
- Unequip(), UnequipAll()을 통해 장비 해제 가능
- 해제 시 외형 및 UI 모두 초기화 처리
3. 스탯 적용
- 장비 장착 시 보너스 스탯(ATK, DEF, HP) 계산 후 CharacterStats.UpdateStats()에 전달
- 콘솔 로그로 최종 계산 결과 확인
4. 인벤토리 UI 연동
- InventorySlot.MarkAsEquipped() → 장착 슬롯에 체크 표시 + 버튼 비활성화
- InventorySlot.ResetVisual() → 해제 시 체크 제거 + 버튼 활성화
- InventoryUI.FindSlotByItem()으로 특정 장비 슬롯 찾기
5. 세이브/로드 기능
- SaveToData() → 현재 장착 무기/방패 ID 저장
- LoadFromData() → 저장된 ID 기반으로 Resources.Load() 사용해 장비 불러오기
- 불러온 후에도 자동으로 외형 및 스탯 반영

배운 점
- 동기화 중요성: 장비 데이터는 외형, 스탯, UI에 모두 영향을 주므로 한쪽만 바뀌면 이상한 동작 발생
- 데이터 저장/로드 시점이 중요함: LoadFromData() 후 바로 ApplyTotalStats()를 호출해야 상태 일관성 유지
- UI 자동화를 위해 InventorySlot과 EquipManager 간의 참조 연결 구조 설계가 중요