【问题标题】:Unity: using yield waitforseconds more than onceUnity:多次使用yield waitforseconds
【发布时间】:2015-03-02 09:17:18
【问题描述】:

这个想法是为 Regenerate() 每 2 秒创建一个延迟,这样我可以给玩家 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() 时都能等待。

【问题讨论】:

    标签: unity3d unityscript


    【解决方案1】:

    问题是您在每一帧都开始新的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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-08
      • 2019-06-19
      • 2018-11-09
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2012-10-14
      相关资源
      最近更新 更多