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"); } }
結果
WaitForSecondsはTime.timeScaleを戻さない限り永久に待機し、
WaitForSecondsRealtimeのみ現実時間が使われていることが分かります!
以上です!