上一篇先把 Cash Club 的技术栈分层铺开了,这一篇单独收拢客户端业务框架。
很多人提到 xLua,第一反应都是热更新。但在我参与的 Cash Club 项目里,xLua-framework 真正重要的价值不是“能不能热更”,而是它帮我们把 Unity 运行时能力和高频变化的业务逻辑拆开了。
如果没有这层抽象,后面机台越来越多、活动越来越密、外围系统越来越复杂时,客户端很容易变成一个难以收拾的大泥球。
一、为什么这类项目需要脚本层业务框架
Cash Club 的客户端不是单一玩法产品,而是一个长期运营的平台型项目。
它有几个很典型的特征:
- 主题机台持续增加
- 日常活动和节日活动上线频繁
- 大厅、商店、任务、成就、支付这些模块一直在扩展
- 同一套界面逻辑会反复出现在不同系统中
这种项目最怕的是所有业务都直接绑在 MonoBehaviour 上。
短期开发看起来快,长期维护会很痛:
- 页面控制逻辑散在多个组件里
- 网络回包更新谁负责不清楚
- 生命周期跟着 GameObject 乱跑
- 稍微重构就牵一大片引用
脚本层框架的意义,就是给业务逻辑一个稳定的落点。
二、我更看重的不是“Lua 能写功能”,而是“边界能否稳定”
在这个项目里,C# 负责的是基础能力,Lua 负责的是高频业务控制。
这个边界如果不稳定,项目很快会出现两种极端:
- 什么都塞 Lua,导致底层能力失控。
- 什么都留 C#,导致业务改动成本越来越高。
比较合理的分工是:
C# 层
- 资源加载
- 网络封装
- 原生 SDK
- UI 基础组件
- 动画、音效、特效承载
- 性能敏感的底层能力
Lua 层
- 页面打开关闭流程
- 业务状态控制
- 红点和入口逻辑
- 活动倒计时和领奖规则
- 配置驱动的表现控制
- 主题玩法流程编排
这样拆以后,团队讨论问题会简单很多。大家会更明确地知道,某个问题应该落在引擎层、框架层还是业务层。
三、客户端业务框架最核心的是这三件事
1. 模块化
一个能长期使用的业务框架,必须让模块边界清晰。
我在项目里会优先把这些模块拆开:
- 页面模块
- 数据模块
- 网络协议模块
- 事件模块
- 配置模块
- 主题机台模块
这样做的好处是,任务系统和成就系统即便都要响应领奖,也不需要彼此直接耦合。
2. 生命周期可控
页面什么时候初始化、什么时候绑定事件、什么时候请求数据、什么时候释放资源,这些事情如果只靠“打开界面时顺手写一下”,后面必出问题。
尤其是大厅、弹窗、活动入口这类会高频打开关闭的模块,如果生命周期不统一,最常见的问题就是:
- 事件重复注册
- 旧数据没清掉
- 倒计时重复跑
- 红点状态异常
业务框架最好给页面生命周期一套固定节奏,比如:
- 创建
- 初始化视图
- 绑定事件
- 拉取数据
- 刷新显示
- 关闭释放
这比“想到哪写到哪”稳定得多。
3. 数据流清楚
Cash Club 这种项目里,很多 bug 不是逻辑本身写错,而是数据从服务端回来以后,谁该更新、更新到哪一层、UI 什么时候刷新,没有统一规范。
一个成熟的框架至少要让下面这条链路清楚:
网络回包 -> 数据更新 -> 事件派发 -> 页面刷新
只要这条链路稳定,后面无论是任务、支付、活动还是大奖提醒,接入方式都会一致很多。
四、为什么活动系统特别依赖这一层框架
活动系统是最能检验客户端框架质量的地方。
因为活动有几个典型特点:
- 类型多
- 生命周期短
- 配置变化快
- 入口和奖励逻辑重复度高
如果没有脚本层框架做中间层,每上一个活动都容易变成一次小型硬编码工程。
而有了统一框架以后,很多活动其实只是在复用:
- 活动基类
- 倒计时组件
- 领奖弹窗
- 入口注册
- 配置解析
- 状态刷新
这也是为什么我后来越来越倾向于先把基础框架写扎实,再去谈具体业务功能。
五、xLua-framework 在团队协作上的实际收益
从项目推进角度看,这套框架至少带来了三个直接收益。
1. 新系统接入更快
登录、大厅、任务、成就、活动这些模块虽然业务不同,但接入方式逐渐统一之后,开发节奏会明显更稳定。
2. 重构成本更低
当某个系统需要重构时,只要边界清楚,就不至于把底层能力和业务流程混在一起一起动刀。
3. 更适合长期运营
长期运营项目比拼的不是一开始能不能堆出来,而是半年后、一年后还能不能持续迭代。
xLua-framework 在这里的作用,本质上是在给长期维护争取空间。
六、这套框架最容易踩的坑
用了 Lua 业务层,不代表天然就会更优雅。
几个常见坑我基本都见过:
- Lua 和 C# 职责越写越模糊
- 页面模块里塞太多状态逻辑
- 事件中心被滥用,谁都能发谁都能收
- 为了图快直接跨模块取数据
- 活动系统复制已有脚本,越堆越多
这些问题的根源都一样:框架存在,但没有被当成边界约束去用。
七、总结
xLua-framework 在 Cash Club 里最重要的价值,不是“Lua 可以写多少代码”,而是它让客户端业务逻辑有了稳定的组织方式。
对强运营 Slot 项目来说,真正稀缺的是可持续迭代能力。
只有当:
- 底层能力留在 C#
- 高频业务放到 Lua
- 生命周期统一
- 数据流清楚
- 活动和机台遵守同一套模块边界
这套框架才算真正落地。
下一篇我会继续往下拆,聊聊 Lua 在这类项目里到底应该负责什么,不该负责什么。