Unity 相关优化与扩展工作(笔记)
ABSTRACT
个人碎片笔记(2017 前后),收集若干 Unity 工程扩展方向:RSA 加解密、CSV 转代码工具、基于 IL 注入的 C# 热修复方案与两个 C# 热更框架、反射读 XML 动态建实例、iOS 禁 JIT 限制,以及 NGUI 的两条小优化。
核心要点
- 加解密:用 RSACryptoServiceProvider 以自有公钥/私钥初始化的方案(外站链接备忘)。
- 配置工具链:关注 Advanced CSV Engine 类插件,把 CSV 配置直接转成 C# 代码,减少运行时解析。
- C# 热更路线调研:基于 IL 代码注入的 Lua 补丁方案(C#ToIL,可对任意函数插桩热修复);CShotfix 与 ET(Egametang)两个 C# 热更框架——「不依赖 Lua 的热更」在当时已有多条探索路线。
- 反射实践:用反射 + 泛型动态读取 XML 创建类实例并赋值。
- 平台限制备忘:iOS 平台禁 JIT,运行时生成新代码会报错——这是 AOT 平台热更必须绕道的根因。
- LuaJIT 导出 bytecode 要加参数才带调试信息,否则排错困难。
- 协议工具建议用 Python:protobuf、sproto 等主流协议的代码生成都以 Python 为主,运维生态也最丰富。
- NGUI 优化两条:UICamera 的 Event Type 没事选 3D(3D Collider 比 2D 省内存);全局搜索并删除 NGUI 里多余的 RigidBody。
- 遗留 TODO:让 TestConsole 支持 Lua 控制卸载(参考 QConsole)。
关键实体与概念
RSACryptoServiceProvider、IL 注入、CShotfix、ET 框架、反射、JIT/AOT、LuaJIT bytecode、protobuf、sproto、NGUI、QConsole
关联概念
来源回溯
- 原始文件:
raw/gamedev/unity-相关优化-扩展工作.md(evernote/FW-游戏3研发技术 导入)
时效性评估
- 仍有效:iOS 禁 JIT、协议生成用 Python 脚本生态,至今成立。
- 已过时:文中的 C# 热更探索(IL 注入、CShotfix、早期 ET)已被 HybridCLR 收敛——直接解释执行热更 C# 程序集,成为主流答案;ET 框架本身仍在活跃迭代(见 Unity 热更新方案演进)。NGUI 已被 UGUI/FairyGUI 取代。