Unity:不止一次使用 yield waitforseconds
Unity: using yield waitforseconds more than once
想法是每 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() 时都能等待。
问题是您在每一帧都开始新的 WaitForSeconds
。所以 2 秒后几乎每一帧都有一个等待结束。您可以使用布尔变量修复此问题,方法是仅在 true
时执行 Regenerate()
并在等待时将其设置为 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);
}
想法是每 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() 时都能等待。
问题是您在每一帧都开始新的 WaitForSeconds
。所以 2 秒后几乎每一帧都有一个等待结束。您可以使用布尔变量修复此问题,方法是仅在 true
时执行 Regenerate()
并在等待时将其设置为 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);
}