[TIL] 35일차 - 스킬 트리 만들기

김유원·2024년 2월 13일
0

📝 24.02.13

지난주에 만들던 스킬 트리를 마무리 지었다.

물론 스킬 트리를 unlock 이 불가능 할 때 왜 불가능한지 안내하는 팝업이나 unlock 되어 있는 트리는 다른 스프라이트를 보여주는 등의 수정은 필요할 것 같지만 아무튼 완성했다.

이게 완성한 스킬트리와 스킬 사용 예시이다.

스킬 트리의 해금에 따라 공격 구체가 늘어나는 것을 확인할 수 있고, 스킬 쿨타임을 스킬 버튼 이미지를 통해 확인할 수 있다.

스킬 쿨타임에 따른 스킬 버튼은 이렇게 구현하였다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SkillButton : MonoBehaviour
{
    [SerializeField] Image img;
    [SerializeField] private Button btn;
    private bool isCool = true;
    
    public void PressButton()
    {
        btn.interactable = false;
        StartCoroutine(CoolTime());
    }

    IEnumerator CoolTime()
    {
        float cool = SkillManager.instance.coolTime;
        float maxCool = cool;
        while (cool > 0f)
        {
            cool -= Time.deltaTime;
            img.fillAmount = (cool / maxCool);

            yield return new WaitForFixedUpdate();
        }
        btn.interactable = true;
    }
}

IEnumerator에서deltaTime을 활용하였더니 쿨타임에 따른 이미지 변화를 구현할 수 있었다.


이외에 오늘 겪은 트러블 슈팅도 있었다.

스킬 구체 Destroy 시 SkillManager의 List에서 MissingReference 오류가 나는 문제가 있었는데, 이에 대한 상세한 설명은 레포지토리의 Issue란에 작성하였다.

🔗: [버그] 스킬 구체 Destroy 시 SkillManager의 List에서 MissingReference 오류가 나는 문제

대략적으로 설명하면 List<GameObject>안의 GameObject가 특정 조건에 Destroy()되면 리스트 접근 시에 MissingReference가 일어나는 오류인데, 단순하게 null 체크 방식으로 해결하였다.

스킬 트리 구현은 기능상으로는 구현이 완료되었으므로 편의성이나 이미지 개선 등이 필요할 듯 하다.

profile
개발 공부 블로그

0개의 댓글

관련 채용 정보