没有IEnumerator或协程的Unity WebGL HTTP请求

时间:2019-02-11 12:49:22

标签: http unity3d unity-webgl

标题表明我正在尝试在Unity(WebGL)中发出HTTP请求。

在我在这里找到的文档中:WebGL Networking他们告诉我创建一个IEnumerator类型的函数,并通过StartCoroutine调用对其进行调用。

这很好,我的问题是我需要为另一个库中的类提供回调HttpRequest

我的回调如下:

private string HttpRequest(string url, string method, string body=null) {

    WWW www = null; // = null is compiler candy

    if (method == "GET") {
        www = new WWW(url);
    } else if (method == "POST") {
        //POST specific implementation...
    } else {
       // do something else
    }

    while (!www.isDone) { } // this is Wrong.
    return www.text;
}

问题在于,除非我从HttpRequest返回,否则调用方法JavaScript将无法处理该请求。但是另一方面,调用方法期望string而不是某种IEnumerator

构造WWW类后,是否有一些解决方法可以让JavaScript正常工作?

1 个答案:

答案 0 :(得分:1)

WWWUnityWebRequest是异步的。

要执行同步请求,您需要编写一个JavaScript插件。通过使用一些库,它不是很复杂,例如jquery。

function getdata($url, $method, $data)
{
    var text = '';

    $.ajax({
        url: $url,
        type: $method,
        async: false, //synchronous request
        data: $data,
        success: function(data){
            text = data;
        },
        error: function(data){
            text = data;
        }
    });

    return text;
}

更多信息:

Communication between javascript and unity

jquery.ajax