我正在学习如何在 Unityscript 中使用WaitForSeconds函数,并且之前已经取得了成功。但现在我在一个脚本中尝试它,当对象的健康达到 0 时,将对象(在这种情况下为一个盒子)移出屏幕,然后在设定的秒数后让它重新出现在随机位置屏幕上,并将运行状况设置回其默认值。到目前为止,我所拥有的是:
function Update ()
{
if(health <= 0)
{
RespawnWaitTime ();
var position = Vector3(Random.Range(-6,6),Random.Range(-4.5,4.5),0); //this is the onscreen range
transform.position = position;
health = 2;
}
}
function RespawnWaitTime ()
{
var offScreen = Vector3(10,10,0);
transform.position = offScreen;
yield WaitForSeconds(2);
}
但是,它根本不等待 2 秒。盒子直接进入它的新位置,就好像该功能不存在一样。我相信它确实会转到屏幕外的位置,但会直接跳回来而无需等待。我已经通过将一些代码更改为:
function RespawnWaitTime ()
{
var offScreen = Vector3(10,10,0);
transform.position = offScreen;
print("I'm over here!");
yield WaitForSeconds(2);
print("I'm coming back!");
}
第一段文本立即打印完毕,两秒钟后,第二段文本也出现了,正如预期的那样。那么为什么等待也不适用于盒子呢?谢谢你的帮助。