0
我想做一个弹出屏幕,我想停止一些代码,直到在该弹出屏幕上点击一个按钮,这是可能的。你会告诉我一些示例代码吗?是否有可能在Unity中暂停联合例程,直到在Unity 3D中按下按钮?
我想做一个弹出屏幕,我想停止一些代码,直到在该弹出屏幕上点击一个按钮,这是可能的。你会告诉我一些示例代码吗?是否有可能在Unity中暂停联合例程,直到在Unity 3D中按下按钮?
你的协同程序的代码应该是这样的:
IEnumerator MyCoroutine()
{
while(!buttonClickFlag)
{
yield return null;
}
//...
buttonClickFlag = false;
action();
}
当buttonClickFlag设置为true时执行的操作。
当然,在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!");
}
}
只要知道“暂停”协程并没有意义。一个协程与一个“进程”或类似的东西完全没有关系。这只是***运行代码,游戏引擎***的每一帧。游戏引擎是基于框架的,而协程实际上就是“你如何访问框架”。 – Fattie
暂停?为什么不单单点击按钮就启动协程?你是什么意思**停止一些代码**?请给我们一些代码。 – zwcloud