Unity:使主线程等待,直到数据加载或时间过去

时间:2018-04-24 11:38:41

标签: unity3d c#-4.0 hololens

我试图通过URL从远程服务获取一些Json数据。我知道WWW课程可以用于此,但我不知道是否有可能在继续该课程之前等待该课程的响应。有谁可以提供帮助?

来自Unity文档https://docs.unity3d.com/ScriptReference/WWW.html的编码示例与您激活它的线程异步工作。我尝试等待调用结束,但我一直遇到同样的问题。

您似乎只能等待异步调用异步调用。我希望调用不要运行异步或让我的主线程等到调用完成。

我尝试在以下课程中获取数据:

    public String data { get; set; }
    public bool loaded { get; set; }


    public IEnumerator ReadData(String source) {
        using (WWW webClient = new WWW(source))
        {
            yield return webClient;
            data =  webClient.text;
            loaded = true;
        }
    }

我正在开发一种hololens作为终端设备,如果可以帮助的话。

1 个答案:

答案 0 :(得分:2)

我认为您的意思是等待下载完成,以便您可以处理下载的数据:

private IEnumerator DownloadData()
{
    using (WWW www = new WWW(someURL))
    {
        yield return www; // Wait for download to finish

        // Once the code reaches here your download has finished.
        byte[] downloadedData = www.bytes;
    }
}

用法:

StartCoroutine(DownloadData());