xLua-framework 在 Cash Club 里的落地方式:业务框架不是热更两个字

上一篇先把 Cash Club 的技术栈分层铺开了,这一篇单独收拢客户端业务框架。

很多人提到 xLua,第一反应都是热更新。但在我参与的 Cash Club 项目里,xLua-framework 真正重要的价值不是“能不能热更”,而是它帮我们把 Unity 运行时能力和高频变化的业务逻辑拆开了。

如果没有这层抽象,后面机台越来越多、活动越来越密、外围系统越来越复杂时,客户端很容易变成一个难以收拾的大泥球。

一、为什么这类项目需要脚本层业务框架

Cash Club 的客户端不是单一玩法产品,而是一个长期运营的平台型项目。

它有几个很典型的特征:

  • 主题机台持续增加
  • 日常活动和节日活动上线频繁
  • 大厅、商店、任务、成就、支付这些模块一直在扩展
  • 同一套界面逻辑会反复出现在不同系统中

这种项目最怕的是所有业务都直接绑在 MonoBehaviour 上。

短期开发看起来快,长期维护会很痛:

  • 页面控制逻辑散在多个组件里
  • 网络回包更新谁负责不清楚
  • 生命周期跟着 GameObject 乱跑
  • 稍微重构就牵一大片引用

脚本层框架的意义,就是给业务逻辑一个稳定的落点。

二、我更看重的不是“Lua 能写功能”,而是“边界能否稳定”

在这个项目里,C# 负责的是基础能力,Lua 负责的是高频业务控制。

这个边界如果不稳定,项目很快会出现两种极端:

  1. 什么都塞 Lua,导致底层能力失控。
  2. 什么都留 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 在这类项目里到底应该负责什么,不该负责什么。