【问题标题】:How can I download text from server?如何从服务器下载文本?
【发布时间】:2019-01-25 19:10:39
【问题描述】:

我需要从服务器下载 JSON 并在我的代码中反序列化以使用它。

我知道,我需要 UnityWebRequest 和协程。我理解两种方式。 我可以启动协程,向服务器发送请求并处理该被调用协程中接收到的数据,或者 我可以启动协程,发送请求并将结果保存到类私有变量中。在那个时候,在 StartCoroutine 之后我可以做 while(variable == null),然后在调用者方法中处理数据

private void Start()
    {
        StartCoroutine(LoadPagesId("SomeURL.com"));
    }

    private IEnumerator LoadPagesId(string url)
    {
        var request = UnityWebRequest.Get(url);
        yield return request.SendWebRequest();

        var data = request.downloadHandler.text;
        request.Dispose();

        // Do something with data
    }

private string _str;

    private void Start()
    {
        StartCoroutine(LoadPagesId("SomeURL.com"));
        while (_str == null)
        {

        }
        // Do something with data
    }

    private IEnumerator LoadPagesId(string url)
    {
        var request = UnityWebRequest.Get(url);
        yield return request.SendWebRequest();

        _str = request.downloadHandler.text;
        request.Dispose();
    }

有没有其他方法,没有全局变量和扩展的 LOAD 方法?

【问题讨论】:

    标签: c# unity3d server


    【解决方案1】:

    是的,你可以,例如只需添加回调:

    private void Start()
    {
        StartCoroutine(LoadPagesId("SomeURL.com"), HandleSuccess, HandleError);
    
        // Or as lambda expressions
        StartCoroutine(LoadPagesId("SomeURL.com"), success => {
           // do something with success
        }, error => {
           // do something with error
        });
    }
    
    private IEnumerator LoadPagesId(string url, Action<string> successCallback, Action<string> errorCallback)
    {
        var request = UnityWebRequest.Get(url);
        yield return request.SendWebRequest();
    
        if(www.error)
        {
            errorCallback?.Invoke(www.error);
        } 
        else
        {
            successCallback?.Invoke(request.downloadHandlet.text);
        }
    }
    
    private void HandleSuccess(string result)
    {
        // Do something
    }
    
    private void HandleError(string error)
    {
        // Do something
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2015-05-20
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多