已有 Unity 项目接入
以下框架配置步骤来自固定 b29c7b21b93dbb393f9855841e28b43f72ae14ae,其源码声明 framework 2.8.45、Unity 2022.3。模板 be4326b5… 依赖 2.8.38;本文不能保证这些 2.8.45 接口在 2.8.38 存在或行为相同。本文覆盖配置和接线,没有提供该组合的 Unity 运行通过证据。
选择接入范围并保留现有项目事实
先保存消费者提交、Unity 完整版本/目标平台、manifest/lock、启动场景、程序集边界、资源布局和当前外部运行证据。明确要采用 framework、独立 Energy/SpellIndicator Feature,还是迁移成模板三层装配;它们不是同一个操作。
已有成熟项目可以只接入单一能力。不要直接复制模板完整 GameMain 覆盖产品代码;产品协议、权威状态、服务器结果、场景和资源仍归消费者。各能力的公共接口与适配器由产品组合层连接。
按固定框架 README 配置
- 在 Project Settings → Package Manager 增加 scoped registry:名称 Wenjing Registry,scope
com.wenjing,URL 使用包 owner 为该消费者提供的实际地址。固定 README 的内部历史值为http://192.168.0.170:4873/;使用它需要相应内网和访问权限,不保证服务可达。当前没有公开匿名包下载通道的证据。F1 - 在 My Registries 选择 LibWJFramework,采用经消费者确认并有来源回执的精确版本;不要无条件 Install latest。实际 manifest/lock 与 PackageCache 来源需由外部流程记录。
- README 的导入入口为
WJFramework - 项目模板 - 导入。当前参考子集没有该菜单的实现和导入清单,因此先由 owner 提供同版本导入文件与覆盖规则,再决定如何与现有项目合并;不能宣称此入口无覆盖副作用。 - 在 Project Settings → WJFramework 配置 App/Game 两个资源根;目录项使用
{AppRootPath}、{GameRootPath}作为路径参数。服务器信息由产品提供,README 允许没有服务器信息时跳过;这不证明依赖服务器的业务可离线运行。 - 按产品实际场景、程序集、资源包和路径填写运行配置,审阅生成差异后由合适环境生成。下面说明源码会修改哪些对象,本次没有点击或运行它。
Runtime 配置生成会修改什么
CustomSettingsProvider.GenerateRuntimeConfig() 会创建/更新 RuntimeConfigPath 下的 AppLauncherInfo、ResourceComponentInfo、VideoComponentInfo、HotfixComponentInfo、FairyGUIComponentInfo、DataTableEntryInfo,设置 LaunchInfo、保存 BuiltInData,并更新启动场景中的序列化引用。F2
生成器取 LaunchScene 的第一个根对象上的 AppLauncher,并在 AppLaunchScene 第一个根对象下查找 Data Table、FairyGUI、Hotfix、Resource、Video。这是固定源码的具体结构假设,不是任意已有场景的自动适配。调用会保存场景与资产,不能把“生成配置”当只读动作。
AppHotfixDllNames 为 null 或空时,AppLauncherInfo 的局部生成函数记录错误并返回。当 PackageVersions 为 null 或空、且 YooAsset 收集器包数 ≤ 0 时,ResourceComponentInfo 的局部生成函数也记录错误并返回;已有 PackageVersions 时直接使用它生成 AssetPackages。外层流程仍继续其他步骤。因此单次函数返回或生成了部分 .asset 不能证明所有配置完整;需要对应证据中的实际文件、日志和场景引用。
YooAsset 与程序集布局
固定 README 要求 AppAssets/Codes、GameAssets/Codes 下各建 AOT、Hotfix;App 部分加入 AppAssetPackage,Game 部分加入 DefaultPackage,AOT 使用 AOTDll 标签。实际产品若更换名字,需对照 WJFrameworkSettings、收集器、生成配置和资源输出一致性,而不是仅建同名目录。F1
README 给出的 App 热更基础程序集为 WJFramework.Runtime、WJGame.AppMain,Game 为 WJGame.GameMain;App AOT 提及 System、mscorlib、System.Core。它们是固定源的接入提示,不是完整产品依赖清单。平台、asmdef、生成代码和第三方包的要求仍需 owning source 与外部构建证据。
接入独立 Feature 时保留中立适配边界
Energy 依赖 UGUI,消费者提供配置快照、广告/付费 gateway、文本、反馈和关闭行为,组合 root 登记 EnergyPurchaseUiBridge.Current 并在释放时解除。源码不会替消费者刷新权威购买计数或余额。G1
SpellIndicator 接收中立 target/config/view factory 与世界位置。消费者提供相机转换和战斗/场景逻辑。固定 Controller 的 IsWithinEffectiveArea 恒为 true,Show/UpdatePosition 不自动 clamp;消费端不能把它当施法合法性 gate,详见 SpellIndicator 接入指南。G2
两个模块 README 都要求通过 module-dashboard 发布、module-manager 安装精确版本。现有资料没有打包/导入实现或消费者包回执,因此此处不提供未经核对的工具菜单操作或声称它们已安装。
从外部结果定位接入问题
| 现象 | 首先核对的固定事实 | 提供给 owner 的材料 |
|---|---|---|
| registry / 依赖解析失败 | 实际地址、精确包版本、权限与锁 | 消费者 head、manifest/lock、无凭据错误类别、包来源记录 |
| 运行配置缺失或启动报错 | LaunchInfo、m_Settings、实际场景根结构、组件引用 | 生成文件、场景 diff、外部 job 日志和版本 |
| App/Game 代码或资源加载失败 | 收集器包名、AOTDll、路径与程序集配置 | 资源 manifest、程序集输出与运行配置摘要 |
| Energy 次数/余额不刷新 | provider 是否更新、adapter 是否仍登记 | 产品事件到 RefreshDisplay 的装配路径及权威结果 |
| 指示器位置/释放异常 | 世界坐标、clamp 调用、Hide/EndDragSession、view 生命周期 | 消费者 camera/scene adapter 与精确 head 外部使用证据 |
这些是源码驱动的排查入口,不是已复现故障结论。验收由精确消费者提交的外部包解析、编译、冷导入和目标使用路径证据支持;网页可读和模板 Static 不替代它们。
仍缺的具体材料
实际消费者 manifest/lock/场景和资源设置;所选框架版本的导入菜单实现及清单、WJFrameworkSettings/LaunchInfo/各 Info 类型;完整 IResourceManager 与热更新 Procedure;module-manager 安装实现与回执;消费者 Product Adapter;精确 head/平台外部验收。框架 2.8.38 的材料需另取,不能由 2.8.45 反推。
固定来源
以下是内部固定来源,需要原仓内网和账号权限,公网读者不能保证可访问。链接保留仓库身份、完整 SHA 和相对路径供定位,不授予访问或资源转用权限;正文已独立说明所需字段与使用边界。