【问题标题】:Wait function on UnityUnity 上的等待功能
【发布时间】:2015-08-16 20:48:33
【问题描述】:

我想等到“下一步”按钮被按下然后继续

child.addChild(tmp);
childrenAdded.Push(tmp);
neighbor.GetComponent.<Renderer>().material.mainTexture = null;                     
-WAIT UNTIL CLICK ON NEXT BUTTON THEN CONTINUE-

toExpand.Push(tmp);

有什么想法吗?我试过了:

while(true) {
    if(GUI.Button(Rect(500,680 ,100,30),"Next"))
        break
    }

但它不起作用;它冻结了。

【问题讨论】:

    标签: unity3d unityscript


    【解决方案1】:

    您可以在单击按钮时调用您的代码,而不是等待,如下所示:

    void OnGUI() {
        if(GUI.Button(Rect(500,680 ,100,30),"Next"))                        
            toExpand.Push(tmp);
        }
    }
    

    如果可能,请考虑使用 Unity 4.6 或更高版本,以便您可以使用更容易使用的 new UI

    【讨论】:

    • 当他使用 GUI.Button 时,我认为他已经在 OnGUI() 中,否则 Unity 会抛出异常。他的问题似乎是他需要通过单击按钮来激活一些战利品并在再次单击后将其停用。
    • 我同意问题不在于 OnGUI 本身,我编辑了答案以明确将代码放在点击的回调中(而不是以编程方式等待它)
    • 我也已经编辑了我的答案,因为我意识到我可能误解了他的真正问题,它需要更好地解释“这是我想要实现的目标”......也许他只是需要等待某事完成,这里的答案是使用协程而不是按钮本身;)
    【解决方案2】:

    您可以使用Toggle 按钮而不是按钮,这样您就可以使用工具控制布尔值并在 Update 或 LateUpdate 函数中循环您需要的内容,如下所示:

    private Rect myRect = new Rect(500,680 ,100,30);
    private bool myToggle = false;
    
    void OnGui() {
        myToggle = GUI.Toogle(myRect, myToggle, "Next");
    }
    
    void Update() {
        if(myToggle){
            // what I need to create while true;
        }
    }
    

    请注意,每个 OnGUI 周期都创建一个新的 Rect 不是一个好习惯,因为它每帧运行一次以上,并且会产生性能问题。

    再次阅读您的代码,我可能会误解您的需求,因此如果您能澄清您的代码真正要做的事情会更容易提供帮助。

    另外,如果您只需要类似“向导”的一系列操作,我建议您查看delegates 并使用以下内容:

    delegate void MyDelegate();
    private MyDelegate myDelegate;
    private Rect myRect = new Rect(500,680 ,100,30);
    
    void Start () {  
        myDelegate = FirstFunction; 
    }
    
    void FirstFunction() {
        // will execute until next button is clicked
    }
    
    void SecondFunction() {
        // will execute after next button is clicked
    }
    
    void OnGui() {
        if(GUI.Button(myRect, "Next")) {
            myDelegate = SecondFunction; 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-22
      • 1970-01-01
      • 2022-01-22
      • 2012-05-10
      • 2021-09-21
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多