minigame-tuanjie-transform-sdk/Editor/PCHighPerformance/TODO.md
2026-04-10 16:44:49 +08:00

3.1 KiB
Raw Blame History

PC 高性能模式 — TODO

🔴 高优先级

路径B 平台依赖问题

  • 现状PC 高性能模式的 Editor 代码(菜单、面板)在 com.qq.weixin.minigame UPM 包内,团结引擎的子平台包加载机制导致只有 Active Platform 切到 WeixinMiniGame 时,包才会被编译加载
  • 影响路径BPC 纯项目)开发者必须先切到小游戏平台才能看到 微信小游戏 → 转换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 中写
    • 方案 BPreProcessor 检测到宏不存在时,添加宏后抛出 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 放入独立 asmdefWX-WASM-SDK-V2.Runtime.PCHP.asmdef),通过平台过滤天然隔离编译,替代宏方案
  • WXBase.cs 中通过反射获取 Manager不直接引用类型配合 asmdef 拆分)
  • 代价评估反射调用丢失类型安全、包结构复杂度增加、IDE 跳转体验变差

最后更新2026-04-10