Unity3d 开始例行程序不工作
我想在显示两条文本之间做一个延迟。但它不起作用。 代码是:Unity3d 开始例行程序不工作,unity3d,coroutine,Unity3d,Coroutine,我想在显示两条文本之间做一个延迟。但它不起作用。 代码是: 我还尝试了waitforsecondrealtime()。它也不起作用。我想你有点误解了这一点 如果协同程序本身不是延迟产生的,那么它将与其他程序并行运行(在您的例子中是text2.text=“text3”)(为此,您需要从协同程序调用您的协同程序,或者使用javascript在内部执行此操作) 您或者必须将所有代码移动到应该受到以下延迟影响的协同程序: private void Update () { if (!inArea
我还尝试了
waitforsecondrealtime()
。它也不起作用。我想你有点误解了这一点
如果协同程序本身不是延迟产生的,那么它将与其他程序并行运行(在您的例子中是text2.text=“text3”
)(为此,您需要从协同程序调用您的协同程序,或者使用javascript在内部执行此操作)
您或者必须将所有代码移动到应该受到以下延迟影响的协同程序:
private void Update ()
{
if (!inArea)
{
inArea = true;
StartCoroutine(timer());
}
}
IEnumerator timer()
{
text1.text = "";
text2.text = "text2";
yield return new WaitForSeconds(100);
text2.text = "text3";
}
或者您也可以通过将void Update
更改为IEnumerator Update
来使Update
成为一个协同程序
在您当前的情况下,第一个应该是好的。许多新的Unity程序员不了解协同程序背后发生的事情以及它是如何工作的,这会导致像这样的问题……谢谢您的帮助。事实上,我不知道如何使用协同程序。我搜索了一下delay,找到了一些类似的解决方案。谢谢
private void Update ()
{
if (!inArea)
{
inArea = true;
StartCoroutine(timer());
}
}
IEnumerator timer()
{
text1.text = "";
text2.text = "text2";
yield return new WaitForSeconds(100);
text2.text = "text3";
}