1. 실행 이미지

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

public class Skill3 : MonoBehaviour
{
    [SerializeField] Button skill3Btn;
    [SerializeField] Image prg;
    [SerializeField] TMP_Text text;
    [SerializeField] int coolTime;
    private bool isCoolingDown = false; // 쿨타임 상태

    void Start()
    {
        skill3Btn.onClick.AddListener(() => {
            if (!isCoolingDown) // 쿨타임 중이 아닐 때만 코루틴 실행
            {
                Debug.Log("스킬3 사용");
                StartCoroutine(SkillCoolTime(coolTime));
            }
        });

        text.gameObject.SetActive(false);
        prg.fillAmount = 0;
    }

    IEnumerator SkillCoolTime(int coolTime)
    {
        isCoolingDown = true; // 쿨타임 시작을 나타냄
        skill3Btn.interactable = false; // 버튼 비활성화

        int maxCoolTime = coolTime;
        int currentCoolTime = coolTime;

        text.gameObject.SetActive(true);
        prg.fillAmount = 1;
        text.text = Convert.ToString(currentCoolTime);
        yield return new WaitForSeconds(1);

        while (currentCoolTime > 1) // 1초 -> 0초(x) , 스킬 활성화
        {
            currentCoolTime--;
            prg.fillAmount = (float)currentCoolTime / maxCoolTime;
            text.text = Convert.ToString(currentCoolTime);
            yield return new WaitForSeconds(1);
        }

        prg.fillAmount = 0;
        text.gameObject.SetActive(false);

        isCoolingDown = false; // 쿨타임 종료를 나타냄
        skill3Btn.interactable = true; // 버튼 활성화
    }
}

2. 실행 코드

+ Recent posts