[25.07.21] TIL( 인벤토리 생성 )

설민우·2025년 7월 21일

내일배움캠프 - Unity

목록 보기
79/85

Unity InventoryManager 개선 기록

이 문서는 Unity에서 인벤토리 시스템을 구현한 InventoryManager 클래스의 전체 코드와 기능 개선 내용을 정리한 것입니다.

주요 기능

  • 인벤토리 UI 열고 닫기
  • 장비와 아이템 슬롯 UI 갱신
  • 아이템 추가 및 교체
  • 아이템 교체 시 스탯 제거 및 적용 처리
  • V키를 1초간 누르면 아이템 삭제
  • 삭제 시에도 스탯 제거 처리
  • 교체된 아이템을 정확한 슬롯 위치로 배치

주요 개선 사항

1. V 키 길게 누르기 삭제 기능

void HandleItemDestruction()
{
    if (currentState != InventoryState.Item) return;

    if (Input.GetKey(KeyCode.V))
    {
        _vKeyHoldTime += Time.unscaledDeltaTime;
        if (_vKeyHoldTime >= HoldThreshold)
        {
            DestroyCurrentItem();
            _vKeyHoldTime = 0f;
        }
    }
    else if (Input.GetKeyUp(KeyCode.V))
    {
        _vKeyHoldTime = 0f;
    }
}

2. 아이템 삭제 시 스탯 제거

void DestroyCurrentItem()
{
    if (_itemIndex < _items.Count)
    {
        var item = _items[_itemIndex];
        if (item is IStatItem statItem)
            statItem.RemoveStat(_playerController);

        RemoveItem(item);
        Destroy(item.gameObject);
        RefreshUI();
        HighlightCurrentSlot();
    }
}

3. 교체 아이템을 정확한 위치에 배치

Vector3 dropPosition = itemSlots[_itemIndex].transform.position;
dropPosition.z = 0f;
oldItem.transform.position = dropPosition;
oldItem.gameObject.SetActive(true);

전체 코드

InventoryManager.cs 전체 보기
[... 전체 C# 코드 삽입 ...]
profile
클라이언트 개발자를 지망하고 있습니다.

0개의 댓글