Unity 编程笔录:tolua + LuaFramework 简单热更新使用(公众号笔记)

ABSTRACT

2018-01 公众号笔记。基于 jarjin 的 ulua 演示框架 LuaFramework(PureMVC + tolua#),记录从生成 Wrap 文件、构建资源、编写 MVC 结构 Lua 脚本到发布可热更 APK 的完整流程,以及 LuaBundleMode/UpdateMode/DebugMode 三个开关的组合配置。

核心要点

  • LuaFramework 本质:与 Unity 结合的 PureMVC 框架 + tolua# 热更层;游戏热更需求主要集中在 UI 更新。
  • 平台切换必须重新生成 Wrap 文件(Lua > Gen Lua Wrap Files),常用 Clear Wrap Files + Generate All 一把梭。
  • 运行前先构建资源(LuaFramework > Build XXX Resource),切平台需删除 StreamingAssets 下旧资源再重建。
  • Lua 目录约定:3rd(cjson/pbc/sproto 等第三方库,勿改)、Common(define.lua 全局配置、functions.lua 函数库、protocal.lua 协议)、Controller/Logic/View 标准 MVC 三层。
  • 新增模块流程:define.lua 注册 CtrlName → CtrlManager.Init() 初始化 → 仿 PromptCtrl/PromptPanel 编写 Ctrl 与 Panel;策划需求按模块一一对应 XXXCtrl.lua。
  • 模块划分经验:lua 侧只做 UI 与易变模块,战斗等高性能模块留在 C#;lua 热更代码遵循 KISS 原则(调试排查困难)。
  • 打包开关组合:编辑器开发 LuaBundleMode=false + UpdateMode=false + DebugMode=true;出热更 APK 三者取反;LuaBundleMode=true 时 lua 代码打包进 StreamingAssets/lua/。
  • 热更链路:StreamingAssets 内容(含 lua 与 AB 资源)整体拷贝到 Web 服务器 → 客户端下载比对更新本地文件。

关键实体与概念

tolua#、LuaFramework、PureMVC、Wrap 文件、StreamingAssets、AppConst、MVC、KISS 原则、cjson/sproto

关联概念

来源回溯

  • 原始文件:raw/ip/wechat_articles/Unity编程笔录--tolua+LuaFramework框架简单热更新使用.md(2018-01-19)

时效性评估

  • 仍有效:「资源 + 脚本双通道热更」「UI 用脚本、战斗留原生」「环境开关组合」的架构思想至今通用。
  • 已过时:tolua/ulua 生态已基本停止维护;现代主流是 xlua(腾讯,C# 与 Lua 互操作更完善)与 HybridCLR(原 huatuo)(直接热更 C# 程序集,无需脚本层);PureMVC 在游戏客户端也已被更轻量的自研 MVC/MVVM 取代。LuaFramework 可作为理解热更原理的历史标本,新项目不建议采用。