Unity加载Resources下文本文件为TextAsset时报空引用异常如何解决
Unity Resources.Load加载TextAsset空引用异常解决思路
你遇到的空引用是Resources.Load方法返回null,后续访问text属性时抛出异常,可按以下顺序排查:
1. 移除资源路径的后缀名
Resources.Load加载TextAsset类型资源时,不需要传入文件扩展名,你的代码中传入4.txt会被Unity识别为查找名为4.txt且无后缀的文件,自然匹配不到对应资源,将路径改为4即可。
2. 检查资源路径正确性
- 确保
4.txt存放在Assets/Resources目录或其下的子目录中,若存放在子目录例如Assets/Resources/Config/4.txt,加载路径需要补全子目录层级,写为Config/4 - 路径和文件名严格匹配大小写,尤其目标平台为移动端、Linux时,Unity对路径大小写敏感
- 禁止将
Resources文件夹嵌套在Editor目录下,该目录下的资源仅能在编辑态访问,运行时不会被打包加载
3. 校验文件导入配置
选中项目内的4.txt文件,在Inspector面板检查以下配置:
Asset Type需设置为Text(对应TextAsset类型)Include in Build选项处于勾选状态- 没有被标记为
Editor Only的资源标签
4. 增加空值校验逻辑
所有资源加载操作都建议增加空校验逻辑,避免因资源缺失导致程序直接崩溃,修正后的参考代码如下:
using UnityEngine; public class LoadTextFile : MonoBehaviour { // 注意此处不需要加.txt后缀 public string txtFile = "4"; string txtContents; void Start () { // 改用泛型加载更安全,避免强制类型转换风险 TextAsset txtAssets = Resources.Load<TextAsset>(txtFile); if (txtAssets != null) { txtContents = txtAssets.text; Debug.Log("文本加载成功,内容:" + txtContents); } else { Debug.LogError($"文本资源加载失败,请检查路径是否正确:{txtFile}"); } } }
内容的提问来源于stack exchange,提问作者Pezza
相关产品推荐
相关产品推荐

