반응형
시간이 지난 후에 어떤 이벤트를 실행하려고 할 때 타이머 기능이 필요합니다. 타이머 기능을 구현하는 방법은 다양하게 있지만 이번에는 가장 기본적인 방법으로, 적은 시간을 시간 변수에 빼서 변수가 0초가 됐을 때, 함수가 동작하는 방법을 소개하려고 합니다. 이 방법을 쓰기 위해 Time.deltaTime를 변수에 빼야 합니다. Time.deltaTime은 1초를 현재의 프레임으로 나눈 값으로, 프레임이 느려지거나 빨라질 때마다 조금씩 값이 변합니다. 예를 들어 프레임이 30fs라고 하면 약 1/30 정도의 값이 출력됩니다. 프레임 속도에 따라 값이 변하기 때문에 단순하게 0.02f를 빼는 것에 비해 더 타이머에 사용하기 적합합니다.
C# (UNITY 3D)
public UnityEngine.UI.Text text_Timer;
private float time_current;
private float time_Max = 5f;
private bool isEnded;
private void Start()
{
Reset_Timer();
}
void Update()
{
if (isEnded)
return;
Check_Timer();
}
//CodeFinder
//From https://codefinder.janndk.com/
private void Check_Timer()
{
if (0 < time_current)
{
time_current -= Time.deltaTime;
text_Timer.text = $"{time_current:N1}";
Debug.Log(time_current);
}
else if (!isEnded)
{
End_Timer();
}
}
private void End_Timer()
{
Debug.Log("End");
time_current = 0;
text_Timer.text = $"{time_current:N1}";
isEnded = true;
}
private void Reset_Timer()
{
time_current = time_Max;
text_Timer.text = $"{time_current:N1}";
isEnded = false;
Debug.Log("Start");
}
변수(variable)
text_Timer : 남은 시간을 보여줌
time_current : 타이머 현재 시간
time_Max : 타이머 시작 시간
isEnded : 타이머 종료 확인
함수(function)
Check_Timer : 타이머 시간 검사 (반복문)
End_Timer : 타이머 종료 시 실행
Reset_Timer : 리셋
UnityTimer / Time.deltaTime / 시간측정 / Unity C# / Frame / 타이머만들기 / 유니티시계 / Simple Stopwatch / Simple Countdown / 카운터 / 스톱워치 / 제한시간 / 딜레이 / Update / Reset / Check / Finish / Full Script
반응형
'Unity3D > C#' 카테고리의 다른 글
UI Dropdown 기능 할당/삭제 (이미지,텍스트 옵션 추가) in Script (0) | 2020.10.21 |
---|---|
UI Slider 기능 할당/삭제 (최솟값/최댓값/숫자로 변환) in Script (0) | 2020.10.20 |
UI Button / Toggle에 기능 할당과 삭제 in Script (0) | 2020.10.14 |
시스템 시간을 이용한 프레임 영향이 없는 타이머(Timer) 스크립트 (1) | 2020.10.14 |
유니티 시간(Time.time)을 이용한 타이머 (Timer) 스크립트 (0) | 2020.10.12 |