유니티 초단위 시간제어하기

2020. 4. 22. 13:16유니티실습

반응형

안녕하세요 유니티비기너입니다.

이번 글에선 스크립트에서 시간을 제어하는 몇 가지 방법을 소개하겠습니다.

 

Time.time 예제 

public Text timeTimer;
private float startTime;

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

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

 

Time.time 설명

Time.time

스크립트가 실행된 이후 경과한 시간을 초 단위로 나타냅니다.

(경과한 시간을 int형으로 Text 컴포넌트를 이용하여 출력)



Time.time을 먼저 startTime에 치환하고 (스크립트 실행 시간에 따른 격차 시간 제거를 위하여)

Update 문안에서 Time.time - StartTime 식을 이용하여 타이머를 만드는 것이 가능합니다.

※ Update()는 매 프레임마다 호출되는 MonoBehaviour의 함수입니다.

 

Time.deltaTime 예제

public Text timeTimer;
private float startTime;

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

void Update() {
    deltaTime += Time.deltaTime * 1;
    deltaTimeTimer.text = deltaTime.ToString();
}

Time.deltaTime 설명

지난 프레임이 완료되는 데까지 걸린 시간을 나타내며 단위는 초를 사용합니다.


프레임이란 디스플레이 장치가 화면 하나의 데이터를 표시하는 속도를 나타내는데

컴퓨터의 성능이 떨어질수록 프레임이 지연되는 현상이 나타나게 되며 멀티게임의

경우 동일 조건의 캐릭터가 이동해도 속도가 달라지는 현상이 발생합니다.


그러한 문제점을 잡기 위해 Time.deltaTime을 활용하여 컴퓨터 성능 차이

즉 프레임을 보정하는데 사용합니다.

 

 

StartCoroutine 예제

public Text coroutineTimer;
private int coroutineNumber;

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

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

StartCoroutine(Functionname) 설명

코루틴은 주로 한 개의 동작을 여러 프레임으로 표현할 때 사용되는 함수입니다.

코루틴 함수 안에는 yiled 문을 활용하여 코루틴을 정지시키거나,

지정된 초만큼 프레임을 지연시키는 방법이 가능합니다.


위의 동작은 yield return new WaitForSeconds를 사용하여 1초 만큼의

프레임을 지연시키면서 while 문을 수행하여 표현한 타이머입니다.

 

InvokeRepeating 예제

public Text invokerTimer;
private int invokeNumber;

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

void Invoketimer() {
    invokeNumber++;
    invokeTimer.text = invokeNumber.ToString();
}

InvokeRepeating (functionName, time, repeatRate) 설명

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

 

위의 예제들과 같이 다양한 방식으로 타이머를 표현해보았습니다.

지금까지 읽어주신 분들에게 감사드리고

더 좋은 정보로 다시 찾아오겠습니다.

감사합니다.


https://play.google.com/store/apps/details?id=com.NeighborGamer.escape

 

패러디방탈출 캐리비안의해적 - Google Play 앱

※게임방법※ - 주위에 단서들을 획득하세요. - 퀴즈를 풀어 단서를 획득하세요. - 단서를 사용하여 방을 탈출하세요. - 힌트를 사용하여 막혔던 문제를 해결해보세요.

play.google.com

반응형