想法是每2秒为 Regenerate()创建一个延迟,所以我可以给玩家2秒钟来捕捉scoreObject,否则它会传送到随机坐标。
问题是在第一个周期后,yield WaitForSeconds(2);
被忽略,使得scoreObject不可触及。
#pragma strict
public var scoreObject : GameObject;
function Update () {
Regenerate();
}
function Regenerate () {
yield WaitForSeconds(2);
scoreObject.transform.position.z = Random.Range(-6.0, 6.0);
scoreObject.transform.position.x = Random.Range(-4.5, 4.5);
}
有没有办法摆脱这个问题?我希望每次使用Regenerate()时都等待。
答案 0 :(得分:0)
问题是你在每一帧都开始新的WaitForSeconds
。因此,在2秒后,几乎每一帧都有一个等待结束。您可以使用布尔变量解决此问题,只有在Regenerate()
时true
并在等待时将其设置为false
。
#pragma strict
public var scoreObject : GameObject;
var doRegenerate = true;
function Update () {
if(doRegenerate) {
Regenerate();
}
}
function Regenerate () {
doRegenerate = false;
yield WaitForSeconds(2);
doRegenerate = true;
scoreObject.transform.position.z = Random.Range(-6.0, 6.0);
scoreObject.transform.position.x = Random.Range(-4.5, 4.5);
}