Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

Time.timeScaleに影響されないWaitForSecondsRealtime

コルーチンと一緒に、WaitForSecondsがよく使われます!
一定時間待機した後に処理を再開するメソッドです!
しかし実はWaitForSecondsで扱われる時間は、Time.timeScaleに影響され、
Time.timeScaleを0にすると永久に再開されません!
Time.timeScaleの影響を無視した現実時間分だけ待機したい場合は、
WaitForSecondsの代わりにWaitForSecondsRealtimeを使います!

WaitForSecondsRealtime

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestScript : MonoBehaviour {

	// Use this for initialization
	void Start () {
        Time.timeScale = 0;
        StartCoroutine(WaitTime());
        StartCoroutine(WaitRealTime());
	}
	
    IEnumerator WaitTime() {
        yield return new WaitForSeconds(1f);
        Debug.Log("Finish WaitTime");
    }

    IEnumerator WaitRealTime() {
        yield return new WaitForSecondsRealtime(1f);
        Debug.Log("Finish WaitRealTime");
    }
}

結果
f:id:hiyotama:20180313121146p:plain

WaitForSecondsはTime.timeScaleを戻さない限り永久に待機し、
WaitForSecondsRealtimeのみ現実時間が使われていることが分かります!

以上です!