我正在嘗試在運行游戲時等待 3 秒才能在 Unity 中啟動。我將所有 gameobjetc 放在一個帶有代碼的空物件中:
[SerializeField]
private float seconds = 3f;
private void Start()
{
StartCoroutine(Wait());
}
private IEnumerator Wait()
{
Time.timeScale = 0f;
yield return new WaitForSeconds(seconds);
Time.timeScale = 1f;
}
當我開始游戲時,它只是凍結了,沒有倒計時。
uj5u.com熱心網友回復:
因為WaitForSeconds
對應游戲中的時間并跟隨Time.scale
,所以當你設定Time.Scale
為時0
,沒有時間流逝。用于WaitForSecondsRealtime
解決此問題,此方法獨立于 作業Time.Scale
,如果您在游戲中使用慢動作或凍結效果,請考慮以下一種:
yield return new WaitForSecondsRealtime(seconds);
uj5u.com熱心網友回復:
您應該能夠通過洗掉Time.timeScale = 0f;
代碼來解決您的問題。讓我解釋一下為什么。
如果您將時間刻度減少到 0.5,則您將時間增加了 2。所以你的3 / 0.5 = 6 seconds
. 當您將時間刻度設定為 0 時,您實際上是在暫停您的應用程式,因為您讓您的應用程式無限等待。
因此,如果您像這樣洗掉 timeScales,它應該可以正常作業:
private IEnumerator Wait()
{
yield return new WaitForSeconds(seconds);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475802.html
標籤:视窗 视觉工作室 unity3d 统一脚本 c#-2.0