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

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

Time.timeScaleに影響されないWaitForSecondsRealtime

いつもひよこのたまごをご利用下さいましてありがとうございます!
おかげ様でチュートリアル数も10ゲーム目となりました!
チュートリアル一覧は
こちら からどうぞ!


スポンサーリンク

コルーチンと一緒に、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のみ現実時間が使われていることが分かります!

以上です!