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";  
}