Unity 아이템 툴바 만들기 [TIL 28일차]

장민제·2025년 5월 21일

내일배움캠프

목록 보기
31/41

🎯 목표

  • 게임 플레이 도중 숫자 키(1~0)를 이용해 슬롯을 선택하고, 선택된 아이템을 사용할 수 있는 툴바 시스템을 구현하는 것이 목표였다.
  • 아이템은 포션과 같은 소비형 아이템장비형 아이템으로 나뉘며, 툴바 슬롯에 등록된 아이템을 사용하면 해당 효과가 적용되도록 만들었다.

🧱 주요 클래스 구성

📃 ToolBar 클래스

  • InputAction: 숫자 키 입력 감지 및 슬롯 선택
  • UseItem(): 아이템 사용 처리
  • ApplyPotionEffect(): 아이템 효과 적용
  • AddItemToSlot(): 슬롯 관리 및 아이템 추가

InputAction을 통해 현재 선택된 슬롯 판별

public void OnSelectSlot(InputAction.CallbackContext context)
{
    if (context.phase == InputActionPhase.Started)
    {
        string keyString = context.control.name;

        if (int.TryParse(keyString, out int keyNum))
        {
            int slotIdx = keyNum - 1 != -1 ? keyNum - 1 : itemSlots.Length - 1;

            ItemSlot slot = itemSlots[slotIdx];

            if (selectedSlot != null && selectedSlot != slot)
            {
                selectedSlot.DeSelectSlot();
                ClearHand();
            }

            selectedSlot = slot;
            selectedSlot.SelectSlot();
        }
    }
}
  • InputAction.CallbackContextInput System에서 이벤트가 발생했을 때 전달되는 입력 정보 컨테이너
  • 어떤 키가 눌렸는지를 판별해서 해당 인덱스의 아이템 슬롯을 선택하는 역할을 수행한다.

📃 ItemSlot 클래스

  • SetSlot(): 슬롯에 아이템 등록, 아이템 수량 표시 및 스택 처리
  • SelectSlot() / DeSelectSlot(): 슬롯 선택/해제 시 외곽선 효과
  • ClearSlot(): 아이템 사용 시 수량 감소 및 초기화

슬롯에 아이템이 추가 가능한지 판별하는 메서드

public bool CanAddItem(ItemData data)
{
    if (dataSO != null)
    {
        if (data == dataSO && quantity < dataSO.maxAmount)
            return true;
        else
            return false;
    }

    return true;
}

💻 실제 화면

profile
Unity, C#

0개의 댓글