반응형
- 코드 작성
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
반응형