全部工程
Unity 模块化框架 · 持续维护

SSFramework

多年 Unity 实践的集中整理,用清晰的分层与生命周期连接游戏和工具。

技术方向
Unity 架构 / 开发工具
设计主张
让分层、作用域与所有权都有边界。
关键能力
  • 类型化业务分层
  • 资源生命周期
  • Hierarchy 节点绑定

在 Outpost 运行时查看 Context 树、BattleState、事件订阅与 Command 流水。

多年经验的一次收束

这是我在以手工编程为主的阶段,对多年 Unity 工作经验的集中提炼。我把反复遇到的业务分层、资源清理、界面组织与工具链问题收束成框架,融合成熟第三方库,让下一款游戏少做重复的基础工作。

技术构成

C# · Unity
类型权限与组件、纯代码双路径
R3 · ObservableCollections
响应式状态、类型事件与集合通知
UniTask
异步任务、取消传递与主线程协作
YooAsset
资源包加载、下载与缓存维护适配
UGUI · UI Toolkit · IMGUI
运行时双 UI 窗口调度与编辑器面板
HybridCLR
热更构建、AOT 元数据与程序集装配
Luban · Protobuf
配置表生成与协议序列化集成
HTTP · WebSocket · JSON
UnityWebRequest、ClientWebSocket 与 JsonUtility 文件存档

设计与实现

SSFramework 核心交互示意Context 组织作用域和依赖。View 通过 Command 进入 System 规则,由 Model 保存状态,再以只读状态和事件反馈到 View。Context作用域 / 依赖装配 / 生命周期View交互与表现Command查询 / 操作意图System业务规则Model持续状态只读状态 / 瞬时事件

Context依赖 / 作用域 / 生命周期

  1. View接收交互意图
  2. Command查询或发起操作
  3. System执行业务规则
  4. Model保留持续状态
核心交互示意:意图进入规则,状态反馈画面。Context 统一组织依赖与生命周期。

分层与作用域

权限进入类型

View 经 Command 操作业务、查询只读状态;分层权限同时约束扩展方法与反射注入。

Context 组织依赖

父子作用域共享服务、保留局部状态,事件各自独立;支持组件与纯 C# 两种组织方式。

状态与事件各司其职

Model 保留持续状态,事件表达瞬时变化;View 订阅只读状态,让规则与表现沿同一条数据流连接。

生命周期与资源并发

DisposableBag

统一托管订阅、资源句柄与对象归还;作用域结束后,迟到的加载结果也会回收。

等待者与物理 owner

取消等待不冒充操作停止;资源适配层持续观察物理终态,再释放协调权。

有序的资源维护

读取并行、维护独占,排队的清缓存操作不会被后续读取持续插队。

同一契约,两种 UI

双 UI 后端

UGUI 与 UI Toolkit 共用层级、模态、返回与过渡规则;字体模块管理 TMP / TextCore 字体链,Loading 句柄协调多方占用。

增量列表绑定

只处理集合增删、移动与替换,每行拥有独立订阅作用域;条目离开时自动退订。

UGUI 内容嵌入桥

隔离相机将 UGUI 渲染为纹理,嵌入 UI Toolkit 布局并随容器裁剪;采样预算与逻辑尺寸分开。

自制示例:6 个绑定节点直接显示字段名,父节点汇总子孙绑定,根节点显示总数。 放大查看
自制示例:6 个绑定节点直接显示字段名,父节点汇总子孙绑定,根节点显示总数。
StartButton 节点的绑定弹窗:勾选 Button 组件,可修改字段名、追加其他组件或解绑。 放大查看
StartButton 节点的绑定弹窗:勾选 Button 组件,可修改字段名、追加其他组件或解绑。

从 Hierarchy 到窗口代码

绑定就显示在节点旁

在 Prefab 层级中选择组件、修改字段名;父节点汇总子孙绑定,折叠后也能看到结构。

生成代码与手写逻辑分开

节点字段与 BindNodes() 写入 .nodes.g.cs;窗口逻辑只在首次创建,重新生成保留手写内容。

配置按实际模块就近覆盖

工程默认、目录配置与单个 Prefab 逐字段继承;生成前能看到最终命名空间、类名与输出目录。

工具中心按用途聚合构建、代码生成、诊断与开发辅助工作台。 放大查看
工具中心按用途聚合构建、代码生成、诊断与开发辅助工作台。

把基础设施变得可见

可观察的运行时

诊断窗口展示 Context、依赖回退与订阅;按需接入记录器,追查命令流水。

模块自登记

工具中心与配置中心只负责聚合导航;各模块提供自己的描述符,支持 Assets、嵌入包和 PackageCache 安装。

生成过程有发布边界

Luban 先写暂存目录,校验后发布代码、数据与清单,处理可观察进程异常下的回滚。

构建与启动衔接

热更构建先核对生成环境,再打包 DLL 与加载清单;启动时补充 AOT 元数据,按依赖顺序装配程序集。

画面与演示说明

诊断与工具图采自 Outpost。节点绑定使用本轮自制的独立 Prefab 示例;代码图为只读查看实际生成文件。计数与警告只表示采集时状态。

自定义设计聚焦组织、生命周期与适配边界;底层能力由对应第三方库提供。

快速开始

接入 Unity 工程

先按接入文档配置包源与必需依赖,再在 Package Manager 使用 Git URL 安装。

text
https://github.com/heroliss/SSFramework.git

从真实消费项目开始

Outpost 展示小型游戏的场景、模拟和 UI 接入;NomadWorkshop 展示更复杂的居民、资源与设施系统。

全部工程