c# - 脚本错误: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);
}
解决方案
使用构造函数UnityWebRequest
创建一个通用的 Web 请求,您必须完全手动设置它!
使用默认选项创建一个
UnityWebRequest
并且没有附加的 DownloadHandler 或 UploadHandler。
这样你需要手动设置它
www.downloadHanlder = new DownloadHandlerBuffer();
在开始请求之前。
一般来说,您更愿意使用的是UnityWebRequest.Get
已经完全配置好的UnityWebRequest
,以便成功执行 GET 请求。
这有点类似于使用Socket
vs 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;
}
}
}
推荐阅读
- scala - log4j:向 Log Analytics 发送日志记录事件时出错
- hadoop - 聚合条件存储在另一个表中的数据
- azure - Azure 媒体服务播放没有资产和输出对象的视频
- apache-spark - 如何确保火花作业在具有所有指定的 minExecutor 之前不应启动
- swift - 当从 GeometryReader 中进行更改时,SwiftUI 不会反映对 @Binding @State 变量的更改
- python-3.x - 查找 numpy 数组上的所有最大值
- javascript - Foreach 在 foreach 中,同时附加到结果 div
- html - 如何从文本中删除两个重复项(原始和重复)?
- arduino - 在 Arduino 上通过 MQTT 将 int 数组发布为字符串
- python-3.x - 用每个 SD 的数据百分比或计数绘制正态分布