본문 바로가기
개발/C#

유니티 C# 스킬 쿨타임 구현 FillAmount 간단 사용법

by SPNK 2022. 7. 6.
반응형
  • 코드 작성
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SkillManager : MonoBehaviour
{
    [Range(0, 20)]
    public float skillTime = 10.0f;
    [Range(0, 20)]
    public float skillCoolTime = 10.0f;

    public Image skillFillAmount;

    public Text skillCoolTimeText;

    bool isUseSkill = true;

    private void Awake()
    {
        skillInformationText.text = "Skill OFF";
        skillCoolTimeText.text = "Skill";
    }

    public void UseSkill() //스킬 사용
    {
        if (isUseSkill)
        {
            isUseSkill = false;

            skillCoolTimeText.text = "";
            skillFillAmount.fillAmount = 1;

            StartCoroutine(SkillCoroutine());
        }
    }
    IEnumerator SkillCoroutine() //스킬 사용중
    {
        while (skillFillAmount.fillAmount > 0)
        {
            skillFillAmount.fillAmount -= 1 * Time.smoothDeltaTime / skillTime;
            yield return null;
        }

        StartCoroutine(ResetSkillCoroutine());
        StartCoroutine(CoolTimeCountCoroutine(skillCoolTime));
    }

    IEnumerator ResetSkillCoroutine() //스킬 쿨타임
    {
        while (skillFillAmount.fillAmount < 1)
        {
            skillFillAmount.fillAmount += 1 * Time.smoothDeltaTime / skillCoolTime;

            yield return null;
        }

        isUseSkill = true;
    }
    IEnumerator CoolTimeCountCoroutine(float number) //스킬 쿨타임 텍스트 표시
    {
        if (number > 0)
        {
            number -= 1;

            skillCoolTimeText.text = number.ToString();

            yield return new WaitForSeconds(1f);
            StartCoroutine(CoolTimeCountCoroutine(number));
        }
        else
        {
            skillCoolTimeText.text = "Skill";
            skillFillAmount.fillAmount = 0;
            yield break;
        }
    }
}

 


참고할만한 글

 

 

유니티 C# 최적화 기법 Object Pooling 오브젝트 풀링 간단 사용법

오브젝트 풀링이란? 오브젝트 풀링은 프로젝트를 최적화하고 게임 오브젝트를 빠르게 생성하고 파괴해야 할 때 CPU에 가해지는 부담을 줄이기 위해 사용합니다. 코드 작성 using System; using System.Co

parksh3641.tistory.com

 

 

유니티 C# Scriptable Object 스크립터블 오브젝트 간단 사용법

스크립터블 오브젝트란? ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너로 프로젝트의 메모리 사용을 줄일 때 사용합니다. 코드 작성

parksh3641.tistory.com

 

반응형

댓글