Unity: заставляет основной поток ждать загрузки данных или времени - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь получить некоторые данные Json из удаленного сервиса по URL. Я знаю, что для этого можно использовать класс 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;
        }
    }

Я разрабатываю гололинз как конечное устройство, если это может помочь.

1 Ответ

0 голосов
/ 24 апреля 2018

Я предполагаю, что вы имеете в виду ожидание завершения загрузки, чтобы вы могли работать с загруженными данными:

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());
...