首页 > 解决方案 > 脚本错误:NullReferenceException:downloadhandler.data

问题描述

脚本中的错误,位于www.downloadHandler.data,错误:NullReferenceException:对象引用未设置为对象的实例

    private IEnumerator LoadBytes(string path, System.Action<byte[]> action) {

        UnityWebRequest www = new UnityWebRequest(path);

        yield return www.SendWebRequest();

        action(www.downloadHandler.data);

    }

标签: c#unity3d

解决方案


使用构造函数UnityWebRequest创建一个通用的 Web 请求,您必须完全手动设置它!

使用默认选项创建一个UnityWebRequest并且没有附加的 DownloadHandler 或 UploadHandler

这样你需要手动设置它

www.downloadHanlder = new DownloadHandlerBuffer();

在开始请求之前。


一般来说,您更愿意使用的是UnityWebRequest.Get已经完全配置好的UnityWebRequest,以便成功执行 GET 请求。

这有点类似于使用Socketvs TcpClient


那么你无论如何都应该检查请求是否成功。

(另请参阅 API 中的示例)

private IEnumerator LoadBytes(string path, System.Action<byte[]> action) 
{
    using(var www = UnityWebRequest.Get(path))
    {
        yield return www.SendWebRequest();

        switch (webRequest.result)
        {
            case UnityWebRequest.Result.ConnectionError:
            case UnityWebRequest.Result.DataProcessingError:
                Debug.LogError("Error: " + webRequest.error);
                break;
            case UnityWebRequest.Result.ProtocolError:
                Debug.LogError("HTTP Error: " + webRequest.error);
                break;
            case UnityWebRequest.Result.Success:
                action?.Invoke(www.downloadHandler.data);
                break;
        }
    }
}

推荐阅读