惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
博客园 - 司徒正美
罗磊的独立博客
D
Docker
Last Week in AI
Last Week in AI
爱范儿
爱范儿
M
MIT News - Artificial intelligence
V
V2EX
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
MyScale Blog
MyScale Blog
V
Visual Studio Blog
博客园 - 叶小钗
B
Blog RSS Feed
A
About on SuperTechFans
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
Martin Fowler
Martin Fowler
P
Proofpoint News Feed

博客园 - 野生西瓜

[Unity 杂货铺] 禁用 Domain Reload 提高效率 [Unity 杂货铺] TMP 字体在编辑器中的动态数据清理 [Unity 杂货铺] SpriteAtlas 和 SBP 打包 [Unity 杂货铺] 游戏字体选择 [Unity 杂货铺] 游戏项目的结构规划与初始化 [Unity 杂货铺] Git 配置与实践 [Unity 杂货铺] 引擎版本的选择 [Unity] 基础寻路算法 - 环境搭建 [Unity] 引擎脚本相关的字符串优化 [Unity] 基础寻路算法 - 代码实践 [Unity] 资源工作流程 - AssetPostprocessor [Unity] 资源工作流程 - ScriptedImporter [Unity] 资源工作流程 - 辅助工具 [Lua游戏AI开发指南] 笔记零 - 框架搭建 [GAME] [Civilization] 文明6字体及字体大小修改 [Unity] 编辑器运行中动态编译执行C#代码 [Unity] 在软件标题栏显示工作路径 [GAMEDEV] 个人开发如何找到合适的图片素材? [施工中] 博客导航 2021 的书 [BACKUP] Visual Studio Code 配置 [theHunterCOTW] 猎人荒野的召唤-一点资料
[Unity 杂货铺] 编辑器中的 C# 代码热重载
野生西瓜 · 2026-09-09 · via 博客园 - 野生西瓜

1 概要

这篇文章的唯一内容,是告诉全宇宙有这么一个 Unity 插件:Hot Reload

可以极大地提高游戏开发中 C# 代码迭代速度,实现类似于脚本语言中的热重载。无需重启游戏,无需编译,省下大量等待时间。

属于编辑器插件,理论上不会存在于发布版本中,提升的是开发阶段的迭代效率,并非正式游戏中的重载方案。

下文只是一些相关资料和个人使用感受,仅作备忘。

2 相关链接

官方网站:https://hotreload.net/

更新日志:https://hotreload.net/zh/changelog

Unity Discussions:https://discussions.unity.com/t/hot-reload-edit-code-without-compiling/

执行原理:https://gitlab.hotreload.net/root/hot-reload-releases/-/blob/production/Third%20Party%20Notices.md

3 价格

插件当前价格是 $79.99(一次性购买),偶尔销售节会打五折。可以在官网,也可以在资产商店购买。

好像有一个月的免费使用时间。

瞅了一眼团结资产商店,价格会低一些,这个就见仁见智了。

4 使用背景

很久以前写 Lua 的时候,就觉得修改完代码就可以热重载代码,调试起来十分方便,不需要重启游戏。于是在使用 C# 做开发时,也一直在找寻方便地进行热重载的方式,尽量能减少编译重启的次数。

2023 年以前在 GitHub 上,存在着一些可行的第三方库:UnityScriptHotReloadFastScriptReload

但是大部分都限制较大,只能在一个比较小的范围内进行修改,有时候也很难区分哪部分修改成功,哪部分未成功待重新编译,所以实用范围较小。

Hot Reload 解决了很大部分的问题,并且这几年也一直都在更新中,逐步扩展对各种泛型、序列化字段、Unity 属性的支持:功能特性

在某个版本中加入了软链接(Junctions)的支持之后,目前已经成为我项目中的常驻插件了。

另外我觉得,不必重启游戏,在测试和调优中是很有正面意义的。很多时候一些不影响功能的小错误,细节,在需要频繁编译、重启、观察的场景中,大家会宁愿放着不处理,或者等后面汇集后再一起修改。

5 使用场景

记录一些我自己觉得“终于不用等了”的场景:

5.1 界面开发,动效开发

界面向左移动 100 单位,还是 150 单位。动效是播放 0.5 秒,还是 1 秒?

多语言拼写错误,调用了不存在的配置。

不需要重启编译时,是可以极大降低这些负担。

5.2 调试

由于 Unity 链接调试器时常常会卡住,另外在一些场景中,断点调试可能没有一行Debug.Log来得方便。

有时候重启还怕一些错误重现不了,或者有些游戏业务逻辑非常依赖特定的活动时间和等级限制什么的,重启一次会非常麻烦。

此时直接修改加入打印代码会很方便,甚至可以顺便把 Bug 修复完后,继续在当前会话中进行测试验证。

5.3 GM 指令

我自己在开发中有一个DoSomethingInF5()的快捷方法,里面的内容不是固定的,有时候是打开某个界面,播放某个特效,有时候是打印场景中所有的单位,跳转到其他场景。

随用随改,改完直接按 F5 执行。

5.4 编辑器工具开发

Hot Reload 不仅适用于游戏运行中,也适用于编辑器工具。例如编写自定义 Inspector 界面时,几乎是改完代码切回编辑器就能看到样式变化了。

5.5 移动平台的热重载

概要中有说过,Hot Reload 属于编辑器插件,理论上不会存在于发布版本中,也不提供游戏运行功能。

但是他提供了移动端的支持,以供开发阶段对移动端进行修补。大致原理是可以通过连接手机,把修改后的代码发送到移动端,以相同的方式进行重载(仅限 Mono)。

我目前还没有使用过这一功能,将来用到再加上使用反馈。但如何可行的话,省去反复打 APK 调试的时间,那可高效太多了。