📝 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
체크 방식으로 해결하였다.
스킬 트리 구현은 기능상으로는 구현이 완료되었으므로 편의성이나 이미지 개선 등이 필요할 듯 하다.