一些在 U3d 工程中出现常见的 Error 解决(公众号笔记)
ABSTRACT
2017-12 公众号笔记。记录五类 Unity 工程常见报错的处理:脚本引用丢失、字段初始化时引用单例导致 NRE、Windows 发布版灰屏排查、脚本换行符(LF/CR LF)警告、Editor 无故发 HTTP 请求报错。
核心要点
- 脚本对象丢失(NullReferenceException):定位问题组件后重新 Associate Script 关联。
- 经典坑:字段声明处直接
private HomeScene scene = Global.inst.homeScene;会 NRE——字段初始化早于单例就绪,必须把对其他单例的引用放进构造函数/Awake/Start。 - Windows 发布版长时间灰屏:查 output_log.txt,大部分问题日志里有指向。
- 换行符警告根因:Unity/Mono 创建的脚本以 LF 结尾,VS 默认 CR LF;解法是在 VS 高级保存选项统一 UTF-8 with signature + CR LF,并修改 Unity 安装目录 ScriptTemplates 模板,从源头统一。
- Editor 未运行却报 HttpClient 请求错误:Preferences 里关闭 “Show Asset Store search hits”(工程浏览器显示商店资源数的功能)即可。
- 方法论:Editor 的诡异网络/资源报错,先怀疑编辑器自身功能选项,而非工程代码。
关键实体与概念
NullReferenceException、字段初始化顺序、Awake/Start、output_log.txt、LF/CR LF 换行符、ScriptTemplates、Asset Store 搜索
关联概念
来源回溯
- 原始文件:
raw/ip/wechat_articles/一些在U3d工程中出现常见的Error解决.md(2017-12-25)
时效性评估
- 仍有效:「字段初始化不得依赖单例、放 Awake/Start」是永恒的初始化顺序教训;团队统一换行符与编码的配置管理思路通用。
- 已过时:output_log.txt 已被
Player.log(路径随平台变化)取代;Asset Store 搜索选项问题对应旧版 Editor;换行符问题在现代 Unity + VS/Rider + .gitattributes 组合下已基本自动化处理。