看下面这个简单的代码:

function Start()
{
    yield WaitForSeconds (4);
    Application.LoadLevel(1);
}


有用!我正在尝试使用C#做类似的事情,但是处理器只是忽略了WaitForSeconds。这是我在C#中的代码:

using UnityEngine;
using System.Collections;

public class openingC : MonoBehaviour
{
    void Start()
    {
        executeWait(5);
        Application.LoadLevel(1);
    }

    void executeWait(float aux)
    {
        StartCoroutine(Wait(aux));
    }

    IEnumerator Wait(float seconds)
    {
        yield return new WaitForSeconds(seconds);
    }
}


有人可以向我解释为什么它不起作用吗?谢谢你的时间。

最佳答案

public class openingC : MonoBehaviour
{
    void Start()
    {
        executeWait(5);
        Application.LoadLevel(1);
    }

    void executeWait(float aux)
    {
        StartCoroutine(Wait(aux));
    }

    IEnumerator Wait(float seconds)
    {
        yield return new WaitForSeconds(seconds);
    }
}


首先,运行Start方法,调用executeWait,程序跳转到该方法。它找到协程并开始运行它,直到找到产量或方法结束为止。 Yield返回程序,指针返回执行executeWait并完成方法。指针返回到Start并调用Application.LoadLevel。

您要挂起LoadLevel调用。

public class openingC : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(Wait(5));
    }

    //You don't need executeWait

    IEnumerator Wait(float seconds)
    {
        yield return new WaitForSeconds(seconds);
        Application.LoadLevel(1);
    }
}

关于c# - C#上的WaitForSeconds,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34242353/

10-11 00:14