2016-11-27 65 views
0

我想做一个弹出屏幕,我想停止一些代码,直到在该弹出屏幕上点击一个按钮,这是可能的。你会告诉我一些示例代码吗?是否有可能在Unity中暂停联合例程,直到在Unity 3D中按下按钮?

+0

只要知道“暂停”协程并没有意义。一个协程与一个“进程”或类似的东西完全没有关系。这只是***运行代码,游戏引擎***的每一帧。游戏引擎是基于框架的,而协程实际上就是“你如何访问框架”。 – Fattie

+0

暂停?为什么不单单点击按钮就启动协程?你是什​​么意思**停止一些代码**?请给我们一些代码。 – zwcloud

回答

1

你的协同程序的代码应该是这样的:

IEnumerator MyCoroutine() 
{ 
    while(!buttonClickFlag) 
    { 
     yield return null; 
    } 
    //... 
    buttonClickFlag = false; 
    action(); 
} 

当buttonClickFlag设置为true时执行的操作。

0

当然,在Unity 5.3之后,他们添加了WaitUntil类,您也可以使用'while'进行等待。这里是一个例子:

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class Popup : MonoBehaviour { 

    public Button button; 
    bool clicked; 

    void Start(){ 
     button.onClick.AddListener (ClickButton); 
     StartCoroutine (WaitUntilForClick()); 
    } 

    public void ClickButton(){ 
     clicked = true; 
    } 


    IEnumerator WaitUntilForClick(){ 

     #if UNITY_5_3_OR_NEWER 
     yield return new WaitUntil (() => clicked); 
     #else 
     // Here you can cache WaitForEndOfFrame object 
     WaitForEndOfFrame waitForFrame = new WaitForEndOfFrame(); 

     while(!clicked){ 
      yield return waitForFrame; 
     } 
     #endif 

     Debug.Log ("after click"); 

    } 

    void Update(){ 
     if(!clicked) 
      Debug.Log ("waiting for click!"); 
    } 
} 
相关问题