mirror of
https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git
synced 2026-04-22 01:35:56 +08:00
3.1 KiB
3.1 KiB
PC 高性能模式 — TODO
🔴 高优先级
路径B 平台依赖问题
- 现状:PC 高性能模式的 Editor 代码(菜单、面板)在
com.qq.weixin.minigameUPM 包内,团结引擎的子平台包加载机制导致只有 Active Platform 切到 WeixinMiniGame 时,包才会被编译加载 - 影响:路径B(PC 纯项目)开发者必须先切到小游戏平台才能看到
微信小游戏 → 转换PC高性能模式菜单,认知摩擦极大 - 方案选项:
- 方案 A(低成本):文档说明 "切平台仅为激活菜单,不影响最终构建"(v0.1.x 临时方案)
- 方案 B(推荐):将 PC 高性能模式拆成独立 Unity Package,不依赖小游戏子平台加载(v0.2 目标)
- 方案 C(折中):提供独立
.unitypackage安装包,绕过 UPM 子平台系统
PCHPBuildPreProcessor 首次构建宏时序问题
- 现状:
EnsurePCHPDefineSymbol()在IPreprocessBuildWithReport.OnPreprocessBuild中执行,即 Build 时才添加WX_PCHP_ENABLED宏 - 问题:首次 Build 时宏刚写入 → 触发 Domain Reload 重编译,但本次 Build 使用的仍是旧编译结果(宏未生效),
WXPCHPInitScript中被#if WX_PCHP_ENABLED包裹的[RuntimeInitializeOnLoadMethod]不会被编译进去 → 第一次 Build 的产物 SDK 不会自动初始化,需要 Build 两次才生效 - 影响:路径B 开发者首次构建时 SDK 静默失效,难以排查
- 方案选项:
- 方案 A:在 PC 高性能面板的"生成并转换"按钮点击时就提前写入宏(Build 前),而非在 PreProcessor 中写
- 方案 B:PreProcessor 检测到宏不存在时,添加宏后抛出
BuildFailedException中断本次构建,提示用户重新 Build - 方案 C:去掉
RuntimeInitializeOnLoadMethod上的#if WX_PCHP_ENABLED条件编译,改用运行时判断(如检查宏对应的Scripting Define是否存在)
🟡 中优先级
README 需要更新的内容
- 删除"PC高性能模式宏开关"菜单相关的文档描述(菜单已删除,宏由构建流程自动管理)
- 涉及:
## 宏开关机制中的菜单方式、## 调试工具 → Editor 菜单表格、## 两条接入路径表格中的宏定义列
- 涉及:
- 路径B 的接入文档中明确说明"需要先将 Active Platform 切到 WeixinMiniGame"及原因
WXBase.cs 条件编译
- 现状:
GetPCHighPerformanceManager()在未定义WX_PCHP_ENABLED时返回object类型,已修复编译错误 - 考虑后续拆包时(方案 B),是否改用 Assembly Definition + 弱引用替代宏方案,提升类型安全性
🟢 低优先级
架构优化(v1.0+ 考虑)
- 将
WXPCHPInitScript放入独立 asmdef(WX-WASM-SDK-V2.Runtime.PCHP.asmdef),通过平台过滤天然隔离编译,替代宏方案 WXBase.cs中通过反射获取 Manager,不直接引用类型(配合 asmdef 拆分)- 代价评估:反射调用丢失类型安全、包结构复杂度增加、IDE 跳转体验变差
最后更新:2026-04-10