You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity调用www.downloadHandler.data报NullReferenceException空引用错误如何解决?

错误触发原因
  • 核心原因是直接调用UnityWebRequest的无额外参数构造函数时,Unity不会自动为实例初始化downloadHandler属性,该属性默认值为null,直接访问downloadHandler.data就会触发空引用异常。
  • 额外潜在原因:未对请求结果做校验,就算配置了downloadHandler,如果请求因网络错误、路径非法、服务端报错等问题失败,也可能出现downloadHandler未正常赋值、或data为空的情况。
修复方案

推荐两种可行的修复写法,同时增加异常校验逻辑:

方案1:使用Unity封装的静态请求方法(更简便)

UnityWebRequest.Get静态方法会自动初始化DownloadHandlerBuffer,无需手动配置:

private IEnumerator LoadBytes(string path, System.Action<byte[]> action) {
    using (UnityWebRequest www = UnityWebRequest.Get(path)) {
        yield return www.SendWebRequest();
        // 先校验请求是否成功
        if (www.result == UnityWebRequest.Result.Success) {
            action?.Invoke(www.downloadHandler.data);
        } else {
            // 可根据需求添加错误处理逻辑,比如回调传null、打印错误
            Debug.LogError($"请求失败:{www.error}");
            action?.Invoke(null);
        }
    }
}

方案2:手动为原生构造的实例添加DownloadHandler

如果需要使用自定义构造逻辑,手动给downloadHandler赋值即可:

private IEnumerator LoadBytes(string path, System.Action<byte[]> action) {
    using (UnityWebRequest www = new UnityWebRequest(path)) {
        // 手动添加DownloadHandler
        www.downloadHandler = new DownloadHandlerBuffer();
        yield return www.SendWebRequest();
        if (www.result == UnityWebRequest.Result.Success) {
            action?.Invoke(www.downloadHandler.data);
        } else {
            Debug.LogError($"请求失败:{www.error}");
            action?.Invoke(null);
        }
    }
}

内容的提问来源于stack exchange,提问作者Arthur Mini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:54:04