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 取代。