유니티는 기본적으로 플레이하는 동안 플레이 타임을 항상 가지고 있습니다. 내가 얼마나 유니티를 오랜 시간 동안 플레이하고 있었는지 알 수 있게 설계가 되어있습니다. 플레이 타임은 Time.time이라는 변수에서 확인할 수 있는데 [Set]은 불가능하고 [Get]만 가능해서 수정은 불가능하고 변수로 받아서 사용만 가능합니다. 유니티의 자체 플레이 타임이기 때문에 사용자에 의해 일시정지를 하거나 프로그램 성능상 멈추는 경우에는 역시 Time.time의 값은 올라가지 않고 그대로 멈춰있습니다. 플레이 타임을 변수로 가지고 있는 Time.time을 이용해서 타이머를 만들어 보겠습니다. Time.time은 프로그램을 끄거나 정지했다가 다시 플레이하지 않는 한 계속 값이 더해집니다. 이 성질을 이용해서 만들 건데 타이머를 초기화할 때 시작 시간을 변수에 담아두고 현재의 플레이 타임과 비교해서 원하는 시간을 넘어가면 이벤트를 실행하게 할 것입니다.
C# (UNITY 3D)
public UnityEngine.UI.Text text_Timer;
private float time_start;
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()
{
time_current = Time.time - time_start;
if (time_current < time_Max)
{
text_Timer.text = $"{time_current:N2}";
Debug.Log(time_current);
}
else if (!isEnded)
{
End_Timer();
}
}
private void End_Timer()
{
Debug.Log("End");
time_current = time_Max;
text_Timer.text = $"{time_current:N2}";
isEnded = true;
}
private void Reset_Timer()
{
time_start = Time.time;
time_current = 0;
text_Timer.text = $"{time_current:N2}";
isEnded = false;
Debug.Log("Start");
}
변수(variable)
text_Timer : 현재 시간을 보여줄 Text
time_start : 타이머가 시작했을 때 플레이타임
time_current : 타이머 현재 시간 (time.Time - time_start)
time_Max : 타이머 최종 시간
isEnded : 타이머 종료 확인
함수(function)
Check_Timer : 타이머 시간 검사 (반복문)
End_Timer : 타이머 종료 시 실행
Reset_Timer : 리셋
Unity C# / 유니티 플레이 타임 / UnityTimer / Time.time/ 시간측정 / Frame / 타이머만들기 / 유니티시계 / Simple Countdown / Simple Stopwatch / Simple Countdown / 카운터 / 스톱워치 / 제한시간 / 딜레이 / Update / ResetTime / CheckTime / FinishTime / 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.deltaTime을 이용한 타이머 (Timer) 스크립트 (0) | 2020.10.11 |