내일배움캠프 55일차

박나연·2025년 6월 25일

내배캠

목록 보기
50/69

최종프로젝트 1주차 - 인벤토리 기능 구현중

오늘의 키워드 : 작업...답답함

<오늘 작업> 6/25

  • 스킬 창과 연동
  • 인벤토리에서 아이템 끼리 자리 바꾸기 가능하게
  • 스킬 슬롯에서 스킬 끼리 자리 바꾸기 가능하게
  • 스킬 레벨이 초기화 되게
  • 휴지통 기능

이벤트버스를 활용해 ActiveSkillSlotController.cs 작성하기

이 액티브 스킬 슬롯은 인벤토리에서 스킬을 장착, 해제, 스왑 등의 일이 일어날 때마다 실시간으로 UI를 갱신하기 위해 만들었다. 이를 위해 아래 SkillChangedEvent를 이벤트버스에 발행하고 ActiveSkillSlotController에서 구독하도록 해보겠다.

먼저

public class SkillChangedEvent
{
    public int slotIndex;           // 0부터 시작하는 슬롯 번호
    public SkillBookData skillData; // 새로 장착된 스킬 (해제 시 null)
}

를 뭐 아무 스크립트에나 넣어주자. 난 스킬 슬롯 스크립트에 넣어줬다.

팀원이 만들어준 이벤트버스 스크립트가 있어서 그걸 활용했다.

using UnityEngine;
using UnityEngine.UI;

public class ActiveSkillSlotController : MonoBehaviour
{
    //액티브 스킬 슬롯 프리팹에 붙는 스크립트(실제로 사용할 스킬 슬롯)

    [Header("이 액티브 슬롯의 인덱스 (0부터)")]
    public int slotIndex;

    public Image skillImage;
    private Color color;

    void OnEnable()
    {
        EventBus.Subscribe<SkillChangedEvent>(OnSkillChanged);
    }

    void OnDisable()
    {
        EventBus.Unsubscribe<SkillChangedEvent>(OnSkillChanged);
    }

    private void Start()
    {
        color = skillImage.color;
    }
    private void OnSkillChanged(SkillChangedEvent evt)
    {
        if (evt.slotIndex != slotIndex)
            return;

        if (evt.skillData == null)
        {
            // 빈 슬롯 표시
            skillImage.sprite = null;
            color.a = 0f;
            skillImage.color = color;
        }
        else
        {
            // 새 스킬 아이콘 표시
            skillImage.sprite = evt.skillData.icon;
            color.a = 1f;
            skillImage.color = color;
        }
    }
}

이벤트버스를 통해 인벤토리 내부 로직과 UI로직을 분리했다.
SkillChangedEvent만 바꾸면 어떤 타입의 슬롯에도 재사용할 수 있어 확장성이 높다.
또한 슬롯 인덱스로 원하는 슬롯만 골라 업데이트하므로 불필요한 리프레시를 방지할 수 있다.

마무리하며

오늘은 팀장님이 한 번 전체적으로 머지를 했다. 어차피 각자 씬에서 작업했고 충돌이 났다고 로그가 있었지만 대충 보니까 같은 스크립트에서 작업해서 있었던 일인 것 같은데 뭐 Enum 스크립트면 금방 고치니까 큰 문제가 아니어서 다행이었다. 오늘 내가 원하는 기능 대부분은 했는데 하나가 안돼서 마음이 답답하다. 내일은.. 될까?

내일 할 일

내일은 아래에 있는 남은 작업 다 하면 될 것 같다.

<남은 작업>

  • 스킬 슬롯 내에서 자유자재로 순서 변경 가능
  • 아이템 획득 시 인벤토리에 들어가게
  • 룬 교체 알림 팝업
  • 아이템 툴 팁

스킬 슬롯 내에서 자유자재로 순서 변경 가능하게 하는 거 꼭 해내고 싶은데.. 오늘 두 시간 걸려도 못 고쳤는데 내일은 꼭 고쳤으면 좋겠다.

0개의 댓글