【发布时间】:2015-04-10 02:16:00
【问题描述】:
我正在开发一些飞行模拟器程序。现在我正试图让关卡在延迟 4 秒后重新启动,但它一直在等待并且没有响应。这是我现在的代码(在 C# 中):
void Update () {
//other irrelevant code in front
float TerrainHeightLocation = Terrain.activeTerrain.SampleHeight (transform.position);
if (TerrainHeightLocation > transform.position.y) { //the plane crashed
StartCoroutine(Wait(TerrainHeightLocation));
}
}
IEnumerator Wait( float TerrainHeightLocation) {
transform.position = new Vector3 (transform.position.x,
TerrainHeightLocation,
transform.position.z);
Instantiate(explosion, transform.position, transform.rotation);
Destroy(gameObject);
Debug.Log ("Waiting");
yield return new WaitForSeconds(4.0f); // waits x seconds
Debug.Log ("Waited for x seconds");
Application.LoadLevel(Application.loadedLevel);
Debug.Log ("Reloaded level");
}
如果有人能在代码中找到问题,那将是一个很大的帮助,因为我已经尝试了一整天,但我无法修复它。
谢谢!
【问题讨论】:
-
什么实际上不起作用?你在等待函数中确实有一个零,所以不会有任何延迟
-
是的,但程序没有等待 0.0f 秒。出于某种原因,它会永远等待。
-
它会永远等待任何值吗?
-
是的,很不幸
-
当你注释掉那个等待函数调用时会发生什么?