Ship the WeChat hot-update catalogs and the camp, TideWhale T2, UI atlas, and animation-lab work.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
udx
2026-10-24 18:04:41 +08:00
co-authored by Cursor
parent 6ebc9401ce
commit 45e62132c8
1432 changed files with 2971856 additions and 2798 deletions
+42
View File
@@ -0,0 +1,42 @@
# HybridCLR Gen All 与 WebGL 原生构建
## 2026-10-22 故障与处理
当前环境为 Windows、Unity 2022.3.62f3、HybridCLR 8.14.1。
`HybridCLR/Generate/All` 在 `GenerateStripedAOTDlls` 内部调用 WebGL Player 构建。
本次错误发生在原生工具链,C# 编译已通过:
- `clang++` 编译 `mscorlib.cpp`、`UnityEngine.CoreModule__4.cpp` 时退出,前者返回 `3221226505`,后者包含 LLVM Instruction Selection 崩溃信息。
- 两个文件保持原来的 `-O3` 参数单独重编译均成功。
- Bee 并发降为 4 后,全部 C++ 编译通过;随后独立线程池中的 `wasm-opt` 返回 `3221225477`。
- 同一份 wasm 输入、同一优化参数在 `BINARYEN_CORES=4` 下单独处理成功。
上述证据支持限制构建并发作为规避措施,尚不能单独确定内存、硬件或工具链内部缺陷中的哪一项是根因。
## 项目处理
`AIClient/Assets/Editor/HybridCLR/WebGlBuildConcurrency.cs` 通过 Unity 构建回调处理 **Windows 编辑器中的 WebGL Player 构建**,包括标准 HybridCLR Gen All 内部的构建及微信导出:
- 未显式指定时,将当前进程的 `BEE_BUILD_THREADS`、`BINARYEN_CORES` 临时设为 `4`。
- 保留开发者或 CI 已提供的环境变量值。
- 成功后恢复环境变量;失败时通过编辑器空闲更新恢复,并在程序集重载前清理。
- 保留既有 C++/wasm 优化参数,不修改 Unity 安装目录或 PackageCache。
Bee 的并发环境变量也存在于当前 Unity 自带的 `bee_backend.exe` 中;本次采样确认 clang 进程数最多为 4。
Binaryen 对并发变量的说明见其[官方调试文档](https://github.com/WebAssembly/binaryen/wiki/Debugging)。
## 验证入口与记录
按项目 Unity Pipeline 流程编译后,执行:
```powershell
unity command --timeout 900 run_script --file AgentScripts/VerifyHybridClrGeneration.cs --entry VerifyHybridClrGeneration.GenerateAll --timeout_ms 900000 --project-path D:/UD/AI/AIGame/AIClient
```
该入口直接调用原始 `PrebuildCommand.GenerateAll()`,不自行设置线程环境变量,也不跳过步骤;检查 AOT DLL、生成文件及环境变量恢复。
成功回执写入 `Tools/output/hybridclr_genall/generate_all.json`。
本次标准流程于 2026-10-22 16:35(北京时间)通过,耗时约 295 秒:生成 55 个 AOT DLL,`MethodBridge.cpp`、`UnityVersion.h`、`link.xml`、`AOTGenericReferences.cs` 均为本轮更新,环境变量已恢复,生成后的 C# 编译通过。
`VerifyHybridClrGeneration.VerifyCallbacks` 另行验证了默认并发、成功清理、显式覆盖值保留和失败后空闲清理,全部通过。
辅助工具 `Tools/diagnose_webgl_clang.py` 和 `Tools/diagnose_webgl_wasm_opt.py` 从 Editor.log 提取失败命令,将重放输出写入 `Tools/output/hybridclr_genall/`,不修改 Unity 的构建产物。