구조
이때 주의할것은 뭐가 위에 올라와야 하는지 구조를 잡는 것이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class UISkillButton : MonoBehaviour
{
[SerializeField] private Button btn;
[SerializeField] private int maxCooltime = 10;
[SerializeField] private TMP_Text cooltimeText;
[SerializeField] private Image slier;
private float cooltime;
private bool isCoolTime;
void Start()
{
btn.onClick.AddListener(() => {
if (IsAvaliable())
{
this.UseSkill();
}
else
{
Debug.Log("아직은 사용할수 없습니다.");
}
});
this.Init();
}
private void Init()
{
Debug.Log("스킬버튼을 초기화 합니다.");
this.cooltime = this.maxCooltime;
this.slier.fillAmount = 0;
this.cooltimeText.text = this.cooltimeText.ToString();
this.cooltimeText.gameObject.SetActive(false);
this.isCoolTime = false;
}
private void UseSkill()
{
Debug.Log("스킬을 사용했습니다.");
this.cooltimeText.gameObject.SetActive(true);
this.cooltimeText.text = this.cooltime.ToString();
this.slier.fillAmount = 1;
this.StartCoroutine(this.CoWaitForCoolTime());
}
private IEnumerator CoWaitForCoolTime()
{
this.isCoolTime = true;
while (true)
{
this.cooltime -= Time.deltaTime;
this.cooltimeText.text = Mathf.RoundToInt(this.cooltime).ToString();
this.slier.fillAmount = this.cooltime / this.maxCooltime;
if (this.cooltime <= 0)
{
break;
}
yield return null;
}
this.isCoolTime = false;
Debug.Log("스킬을 사용할수 있습니다.");
this.Init();
}
private bool IsAvaliable()
{
return !isCoolTime;
}
}
'낙서장 > UIUX' 카테고리의 다른 글
Slider (0) | 2024.03.18 |
---|---|
Switch Button (0) | 2024.03.18 |
Button and Inputfield (0) | 2024.03.18 |