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

43 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 中写
- [ ] **方案 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*