[유니티] 타이머 Unity Timer


결과 화면



Time.time


스크립트가 실행된 이후 경과한 시간을 초 단위로 나타냅니다.
(경과한 시간을 int형으로 Text 컴포넌트를 이용하여 출력) Time.time을 먼저 startTime에 치환하고 (실행 시간에 따른 격차 제거를 위하여)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public Text timeTimer;
private float startTime;

void Start() {
    startTime = Time.time;
}

void Update() {
    float t = Time.time - startTime;
    timeTimer.text = ((int)t).ToString();
}




StartCoroutine (functionName)


코루틴은 주로 한 개의 동작을 여러 프레임으로 표현할 때 사용되는 함수입니다.
코루틴 함수 안에는 yiled 문을 활용하여 코루틴을 정지시키거나, 지정된 초만큼 프레임을 지연시키는 방법이 가능합니다.

yield return new WaitForSeconds를 사용하여 1초 만큼의 프레임을 지연시키면서 while 문을 수행하여 표현한 타이머입니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public Text coroutineTimer;
private int coroutineNumber;

void Start() {
    coroutineNumber = 0;
    StartCoroutine("CoroutineTimer");
}

IEnumerator CoroutineTimer() {
    while (coroutineNumber < 99 ) {
        yield return new WaitForSeconds(1f);
        coroutineNumber++;
        coroutineTimer.text = coroutineNumber.ToString();
    }
}


InvokeRepeating (functionName, time, repeatRate)


매초 반복적인 기능을 수행하는 InvokeRepeating을 활용하며 만든 타이머 예제입니다.
Invoke 함수는 입력된 시간 후에 함수를 호출하며 repeatRate에 지정된 시간이 지날 때마다 반복 호출됩니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public Text invokeTimer;
private int invokeNumber;

void Start() {
    invokeNumber = 0;
    InvokeRepeating("InvokeTimer", 1f, 1f);
}

void InvokeTimer() {
    invokeNumber++;
    inbokeTimer.text = invokeNumber.ToString();
}

댓글