Unity3d 统一:多次使用yield waitforseconds
这个想法是为REGENATE()每2秒创建一个延迟,这样我就可以给玩家2秒的时间来捕捉scoreObject,否则它会传送到随机坐标 问题是在第一个循环之后,Unity3d 统一:多次使用yield waitforseconds,unity3d,unityscript,Unity3d,Unityscript,这个想法是为REGENATE()每2秒创建一个延迟,这样我就可以给玩家2秒的时间来捕捉scoreObject,否则它会传送到随机坐标 问题是在第一个循环之后,产生WaitForSeconds(2)被忽略,使scoreObject不可触摸 #pragma strict public var scoreObject : GameObject; function Update () { Regenerate(); } function Regenerate () { 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);
}
有没有办法解决这个问题?我希望每次使用REGENATE()时,这种等待都能起作用。问题是您在每一帧上都启动了新的WaitForSeconds
。因此,在2秒钟之后,几乎每一帧都有一次等待结束。您可以使用布尔变量解决此问题,方法是仅在布尔变量为true
时执行regenate()
,并在等待时将其设置为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);
}