你不应该SceneManager.LoadScene("demo2");在 之后调用StartCoroutine("RestartScene1");。StartCoroutine("RestartScene1");这段代码可以说是异步代码。被调用,程序继续执行(这里不等待执行)。您应该在yielding之后调用要在该协程中延迟的代码。小例子:public void SomeFunction(){ StartCoroutine("RestartScene1"); // The code here will **not** be delayed}public IEnumerable RestartScene1(){ yield return new WaitForSeconds(RestartSceneDelaySec); // The code here will be delayed}