Unity 热更新(实验性),需要先启用同页的编译服务器。
哪些改动走热更新
- 走热更新:方法体内部的逻辑改动。改条件、改公式、调参数、换调用顺序,这类改动占日常迭代的大多数。
- 回退重编译:结构性改动,包括新增或删除字段、修改方法签名、调整继承关系、新增类型等。这些改动会进入
需编译队列,由一次正常的 Unity 重编译收敛,行为与不开热更新时一致。
状态面板怎么读
开启后,会话输入框上方出现Unity 热更新指示器,展开可见:
未应用修改:已检测到、尚未在编辑器中生效的改动数。正常情况下会在一两秒内清零。Hot patch 代码:当前以热补丁形式运行的代码数量。域重载或重编译后归零,此后运行的是正常编译产物。需编译:无法热更、等待重编译收敛的改动数。不为零时可点击面板上的重编译一次性收敛。失败:热更失败的次数。失败的改动会自动转入重编译,不会丢失。程序集内存:热补丁程序集占用的内存。编译器:编译服务器状态(运行中/空闲/回退 Unity 内置)。
Debug 与 Release
面板中的编辑器模式控制 Unity 脚本的优化级别,直接影响热更成功率:
Debug:不内联代码,所有方法体改动都能热更新;编辑器略慢。Release:编辑器更快,但部分方法会被内联,被内联方法的改动无法热更,需要一次重编译。
Debug;编辑器处于 Release 时,设置页也会给出提示与切换到 Debug按钮。
面板中的进入 Play 重载控制进入 Play Mode 时是否执行域重载:重载为 Unity 默认行为,static 状态干净,但已应用的热补丁会被丢弃并重编;不重载保留热补丁与内存状态,代价是 static 状态跨播放保留。
自检
怀疑热更新工作不正常时,先跑一次自检:「设置」→「热更新与编译」→热重载自检,在编辑器已连接且处于编辑模式时点击运行自检。自检会写入一组测试脚本、进入 Play Mode 逐项验证各类改动的热更行为,结束后自动清理,输出通过与失败项数及完整日志。