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

Unity 2021 LTS中Resources.Load<GameObject>()加载不一致,部分返回Null

Unity Resources.Load 部分预制体加载返回Null的解决方法
  • 检查路径格式是否符合要求
    Resources.Load的路径有严格规则:

    • 必须是相对于Assets/Resources文件夹的路径,不能包含"Assets/Resources"前缀
    • 不能带.prefab后缀
    • 注意大小写差异(Windows编辑器下不区分,但打包后或跨平台会严格校验)
      例如预制体在Assets/Resources/Prefabs/enemyP.prefab,正确路径应为"Prefabs/enemyP",而非"Assets/Resources/Prefabs/enemyP"或"Prefabs/enemyP.prefab"。
  • 验证预制体本身的有效性

    • 选中无法加载的预制体,在Inspector确认其Asset Type为Prefab,且能正常拖入场景使用(若拖入场景报错,说明预制体损坏,需重新创建)
    • 确保预制体确实位于Assets/Resources或其子文件夹内,且未被排除在构建资源之外(可在Player Settings -> Other Settings -> Configuration中检查资源包含情况)
  • 调整加载代码并增加错误日志
    修改加载逻辑,增加空判断和详细错误日志,精准定位问题:

    foreach (var c in dictPrefabs)
    {
        prefabsDict.Add(c.Value);
        var loadedObj = Resources.Load(c.Value);
        if (loadedObj is GameObject prefab)
        {
            prefabs.Add(prefab);
            Debug.Log($"Successfully loaded prefab from path: {c.Value}");
        }
        else
        {
            Debug.LogError($"Failed to load GameObject from path: {c.Value}. Loaded object type: {loadedObj?.GetType().Name ?? "null"}");
        }
    }
    

    通过错误日志可明确是路径错误,还是资源类型不匹配导致的加载失败。

  • 清理缓存并重新导入资源

    • 执行Assets -> Reimport All重新导入所有资源,修复可能的资源导入异常
    • 关闭Unity,删除项目根目录下的Library文件夹,重新打开Unity让其重建缓存,解决缓存引发的加载异常
  • 检查是否使用了其他资源管理系统
    如果项目使用了Addressables等插件,确认无法加载的预制体未被标记为Addressable资源(这类资源会被移出Resources目录,导致Resources.Load无法访问)。若已标记,要么移除标记,要么改用对应资源管理系统的API加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:25:20