跳到主要内容

架构边界与组件扩展

适用模板基线 be4326b5b47794328accc120b6e250497af37191。本文说明技术归属、装配位置和扩展约束,不提供已运行的扩展示例或消费者验收结论。

先确定谁拥有实现​

框架拥有客户端公共基础设施,Gameplay 库拥有可复用玩法模块,模板拥有三层装配骨架和模板默认业务,消费者拥有产品协议、服务器交易、资源选择和实际集成。中台库不承担玩家数据、生产服务或产品业务决策。上游缺陷由对应库 owner 修复并发布;消费者在自己的仓库升级依赖并记录实际集成结果。具体装配边界见下述固定模板来源;升级结果的证据分界见开发、发布与升级。

内容推荐归属判断依据
资源、热更新、公共框架件framework owning repo多产品共享的客户端基础能力
可复用规则、端口、通用玩法表现Gameplay/Runtime 或 Gameplay/Features/<Feature>不依赖具体 Mode 的实体和项目配表
Level 实体、战斗 UI、模式专用资源加载Gameplay/Modes/Level生命周期与一次 Level 会话绑定
接入 UGF 等宿主框架的玩法表现适配Gameplay/Adapters/<Framework>框架依赖通过适配显式隔离
跨玩法的游戏壳、元游戏界面、场景编排GameMain / GameFeatures随游戏层而非某次玩法会话运行
将业务、配表、Mode 与公共服务接线GameMain/Composition组合层允许知道具体实现,公共层不反向知道它
SDK、支付、服务器结果、产品资产消费者适配器或对应产品 owner成功条件与生产责任由产品决定

这是固定模板文档给出的职责划分。Gameplay 包含规则和表现闭环;引用 Unity 类型本身并不是将代码移到 GameMain 的理由。T1

按一次扩展的输入、状态和生命周期落位​

  1. 写出功能输入、输出、权威状态来源和所需宿主服务。区分本地规则结果与服务器结算结果;Energy 的本地购买判断不能冒充支付或广告授奖。
  2. 为共享部分定义最小端口;具体配表、相机、实体、资源系统放在消费端适配层。不要在共享 Runtime 中通过静态服务定位或 Resources / YooAsset 隐式兜底来寻找项目依赖。
  3. 将组合登记放在 GameMain/Composition。例如 SkillEnergy 的共享规则在 Gameplay/Features/SkillEnergy/Runtime,Level 的 ECS、表和 UI 绑定在 Gameplay/Modes/Level/Features/SkillEnergy,对应安装登记在组合层。T1 T2
  4. 明确创建者、注册者、刷新驱动者和释放者。游戏层重启、场景切换和 Mode 退出各自应释放所持对象;共享模型不要复制成两个权威状态。模板文档规定体力快照归 EnergyModel,IdleReward 消费它而不再拥有独立体力字段。T2
  5. 列出所有调用方和程序集引用。修改接口应同步切换调用方并删除失效入口;不能让共享 Runtime 反向引用 GameMain、具体 Mode、生成实体或业务表。
  6. 目录迁移保留 .meta、GUID 和必要的序列化身份。源码目录变化与 Unity 资产身份变化必须分别审阅,不能依靠批量复制来判断完整性。T1 T2

新业务入口与新玩法的不同接线​

业务入口契约位于 Infrastructure/Runtime/Entry,业务 EntryId 和解锁声明位于 GameFeatures/Runtime/Entry,配表、Model 和声明的组合位于 GameMain/Composition/FeatureEntry。固定文档要求新增业务入口声明 EntryId,实现 IEntryRegistrar,由 GameFeatureEntryInstaller 显式登记。T3

Entry 用于真实层级进入点或玩家可见入口。一次注册对象称 Bootstrap,持有 Start/Dispose 的对象称 Lifecycle,容器组合对象称 Installer。AppServiceLocator、GameServiceLocator、ModelResolver 是已有迁移兼容面,文档没有把它们作为新代码扩展点。T3

新玩法模式在 Gameplay/Modes/ 实现 IGameplayMode;需要独立玩法场景时再实现 IGameplaySceneMode。模板 README 指向 TemplateGameplayModeFactory 的 mode key 登记和 Assets/Resources/Configs/gameplay_mode.csv 的配置登记。现有材料没有这些类型的完整 C# 实现,因此这里给出接线位置,不编造接口签名或可直接运行的注册代码。T4

Profile 和业务闭环的审阅规则​

TemplateProfiles/catalog.json 当前 applicationMode 为 catalog-only。minimal、standard、full 是分类目标;生成器没有 Profile 选择字段,不裁剪文件,也不据 Profile 修改运行注册。不要把切换 Profile 名称当作完成依赖隔离或产品精简。T2 T5

business-readiness.json 将 closed、partial、external-required、supporting 分开。closed 要求玩家入口、命令/服务、规则与 Model 变更、表现消费、失败或离线路径和行为 gate;文件中的 gate 路径是声明证据,本次未读取这些 gate 的执行回执。已有代码和登记状态不能证明接收项目的业务已闭环。T2 T6

合入及尚缺材料​

对应 owner 应审阅完整 diff、调用方和资产引用,并遵循实际 owning repo 的合入和验证政策。验证证据应对应被审阅的精确 head;本指南没有提供运行示例。源码合并、包发布、消费者通过和网站发布分别记录,不能用其中一项替代另一项。消费者项目自己的验证规则由该项目确定。

要补成可运行扩展示例,仍需固定模板同 SHA 的 IGameplayMode、IGameplaySceneMode、TemplateGameplayModeFactory、GameFeatureEntryInstaller、IEntryRegistrar 实现,相关 asmdef、场景/预制体引用,以及 docs/architecture/vcontainer-governance.md 和正式外部消费者回执。对于某项 Mode 扩展,还需它自己的 Composition、生命周期和资源适配实现。本稿不凭文档可读推定 API 已运行。

固定来源​

以下是内部固定来源,需要原仓内网和账号权限,公网读者不能保证可访问。链接保留仓库身份、完整 SHA 和相对路径供定位,不授予访问或资源转用权限;正文已独立说明所需字段与使用边界。

相关指南​

阅读路径:开发中台组件 · 生命周期 · 发布与升级 · 版本基线