如何让游戏在 strats 之前等待?
How to make game wait before strats?
当我 运行 游戏在 Unity 中启动前等待 3 秒时,我正在尝试这样做。
我将所有 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;
}
当我开始游戏时,它只是冻结,没有任何倒计时。
您应该可以通过删除 Time.timeScale = 0f;
代码来解决您的问题。让我解释一下原因。
如果将时间刻度减小为 0.5,则时间增加了两倍。所以你的3 / 0.5 = 6 seconds
。
当您将时间刻度设置为 0 时,您实际上是在暂停您的应用,因为您让您的应用无限等待。
因此,如果您像这样删除 timeScales,它应该可以正常工作:
private IEnumerator Wait()
{
yield return new WaitForSeconds(seconds);
}
因为WaitForSeconds
对应的是游戏中的时间,在Time.scale
之后,所以当你将Time.Scale
设置为0
时,没有时间流逝。使用 WaitForSecondsRealtime
解决此问题,此方法独立于 Time.Scale
,如果您在游戏中使用 Slow-Motion 或冻结效果,请考虑此一:
yield return new WaitForSecondsRealtime(seconds);
当我 运行 游戏在 Unity 中启动前等待 3 秒时,我正在尝试这样做。 我将所有 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;
}
当我开始游戏时,它只是冻结,没有任何倒计时。
您应该可以通过删除 Time.timeScale = 0f;
代码来解决您的问题。让我解释一下原因。
如果将时间刻度减小为 0.5,则时间增加了两倍。所以你的3 / 0.5 = 6 seconds
。
当您将时间刻度设置为 0 时,您实际上是在暂停您的应用,因为您让您的应用无限等待。
因此,如果您像这样删除 timeScales,它应该可以正常工作:
private IEnumerator Wait()
{
yield return new WaitForSeconds(seconds);
}
因为WaitForSeconds
对应的是游戏中的时间,在Time.scale
之后,所以当你将Time.Scale
设置为0
时,没有时间流逝。使用 WaitForSecondsRealtime
解决此问题,此方法独立于 Time.Scale
,如果您在游戏中使用 Slow-Motion 或冻结效果,请考虑此一:
yield return new WaitForSecondsRealtime(seconds);