如何让游戏在 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);