From d48a9a4d459c383c7b32b3307a97534e3fcdddd5 Mon Sep 17 00:00:00 2001 From: nebulaliu Date: Wed, 25 Mar 2026 17:22:37 +0800 Subject: [PATCH] Auto-publish. --- CHANGELOG.md | 2 +- .../PCHPBuildPreProcessor.cs | 174 ++++ .../PCHPBuildPreProcessor.cs.meta | 7 + .../PCHighPerformance/README_AutoInjection.md | 110 ++ .../README_AutoInjection.md.meta | 7 + Editor/PCHighPerformance/TROUBLESHOOTING.md | 152 +++ .../PCHighPerformance/TROUBLESHOOTING.md.meta | 7 + Editor/PCHighPerformance/WXApkgPacker.cs | 267 +++++ Editor/PCHighPerformance/WXApkgPacker.cs.meta | 7 + Editor/PCHighPerformance/WXPCHPBuildHelper.cs | 395 +++++++ .../WXPCHPBuildHelper.cs.meta | 7 + Editor/PCHighPerformance/WXPCHPWindow.cs | 39 + Editor/PCHighPerformance/WXPCHPWindow.cs.meta | 7 + Editor/PCHighPerformance/WXPCSettingHelper.cs | 488 +++++++++ .../WXPCSettingHelper.cs.meta | 7 + Editor/WXConvertCore.cs | 24 +- Editor/WXEditorSettingHelper.cs | 28 +- Editor/WXPluginVersion.cs | 2 +- Editor/wx-editor.dll | Bin 246272 -> 246272 bytes Editor/wx-editor.xml | 5 + Editor/wx-editor.xml.meta | 2 +- Runtime/Plugins/wx-perf.dll | Bin 55808 -> 55808 bytes Runtime/Plugins/wx-runtime-editor.dll | Bin 275456 -> 275456 bytes Runtime/Plugins/wx-runtime-editor.xml.meta | 2 +- Runtime/Plugins/wx-runtime.dll | Bin 250368 -> 250368 bytes Runtime/Plugins/wx-runtime.xml.meta | 2 +- Runtime/WXBase.cs | 34 +- Runtime/WXPCHPInitScript.cs | 972 ++++++++++++++++++ Runtime/WXPCHPInitScript.cs.meta | 7 + .../playable-default/check-version.js.meta | 2 +- Runtime/playable-default/data-package.meta | 2 +- .../data-package/game.js.meta | 2 +- Runtime/playable-default/events.js.meta | 2 +- Runtime/playable-default/game.js.meta | 2 +- Runtime/playable-default/game.json.meta | 2 +- Runtime/playable-default/playable-fix.js.meta | 2 +- .../playable-default/plugin-config.js.meta | 2 +- Runtime/playable-default/plugins.meta | 2 +- .../plugins/check-update.js.meta | 2 +- .../plugins/screen-adapter.js.meta | 2 +- .../playable-default/project.config.json.meta | 2 +- .../playable-default/texture-config.js.meta | 2 +- .../playable-default/unity-namespace.js.meta | 2 +- .../unity-playable-plugin.meta | 2 +- .../unity-playable-plugin/index.js.meta | 2 +- Runtime/playable-default/unity-sdk.meta | 2 +- Runtime/playable-default/unity-sdk/audio.meta | 2 +- .../unity-sdk/audio/common.js.meta | 2 +- .../unity-sdk/audio/const.js.meta | 2 +- .../unity-sdk/audio/index.js.meta | 2 +- .../unity-sdk/audio/inner-audio.js.meta | 2 +- .../unity-sdk/audio/store.js.meta | 2 +- .../unity-sdk/audio/unity-audio.js.meta | 2 +- .../unity-sdk/audio/utils.js.meta | 2 +- .../unity-sdk/canvas-context.js.meta | 2 +- .../playable-default/unity-sdk/canvas.js.meta | 2 +- .../playable-default/unity-sdk/conf.js.meta | 2 +- .../unity-sdk/file-info.js.meta | 2 +- .../playable-default/unity-sdk/fix.js.meta | 2 +- Runtime/playable-default/unity-sdk/fs.js.meta | 2 +- .../playable-default/unity-sdk/index.js.meta | 2 +- .../playable-default/unity-sdk/logger.js.meta | 2 +- .../unity-sdk/mobileKeyboard.meta | 2 +- .../unity-sdk/mobileKeyboard/index.js.meta | 2 +- .../unity-sdk/module-helper.js.meta | 2 +- .../unity-sdk/recorder.js.meta | 2 +- .../unity-sdk/resType.js.meta | 2 +- .../unity-sdk/resTypeOther.js.meta | 2 +- .../unity-sdk/response.js.meta | 2 +- .../playable-default/unity-sdk/sdk.js.meta | 2 +- .../unity-sdk/special-callbacks.js.meta | 2 +- .../unity-sdk/texture.js.meta | 2 +- Runtime/playable-default/unity-sdk/touch.meta | 2 +- .../unity-sdk/touch/index.js.meta | 2 +- .../playable-default/unity-sdk/util.js.meta | 2 +- .../playable-default/unity-sdk/utils.js.meta | 2 +- .../playable-default/unity-sdk/video.js.meta | 2 +- Runtime/playable-default/unity-sdk/video.meta | 2 +- .../unity-sdk/video/index.js.meta | 2 +- Runtime/playable-default/wasmcode.meta | 2 +- .../playable-default/wasmcode/game.js.meta | 2 +- .../playable-default/weapp-adapter.js.meta | 2 +- Runtime/wechat-default/check-version.js.meta | 2 +- Runtime/wechat-default/data-package.meta | 2 +- .../wechat-default/data-package/game.js.meta | 2 +- Runtime/wechat-default/events.js.meta | 2 +- Runtime/wechat-default/game.js.meta | 2 +- Runtime/wechat-default/game.json.meta | 2 +- Runtime/wechat-default/images.meta | 2 +- .../wechat-default/images/background.jpg.meta | 2 +- .../wechat-default/images/unity_logo.png.meta | 2 +- Runtime/wechat-default/open-data.meta | 2 +- Runtime/wechat-default/open-data/data.meta | 2 +- .../open-data/data/index.js.meta | 2 +- .../open-data/data/utils.js.meta | 2 +- .../wechat-default/open-data/index.js.meta | 2 +- .../wechat-default/open-data/loading.js.meta | 2 +- Runtime/wechat-default/open-data/render.meta | 2 +- .../open-data/render/image.meta | 2 +- .../open-data/render/image/avatar.png.meta | 2 +- .../open-data/render/image/button1.png.meta | 2 +- .../open-data/render/image/button2.png.meta | 2 +- .../open-data/render/image/button3.png.meta | 2 +- .../open-data/render/image/loading.png.meta | 2 +- .../open-data/render/image/nameBg.png.meta | 2 +- .../render/image/rankAvatar.png.meta | 2 +- .../open-data/render/image/rankBg.png.meta | 2 +- .../open-data/render/image/shareBg.png.meta | 2 +- .../open-data/render/image/shareBg2.png.meta | 2 +- .../open-data/render/styles.meta | 2 +- .../render/styles/friendRank.js.meta | 2 +- .../open-data/render/styles/tips.js.meta | 2 +- .../wechat-default/open-data/render/tpls.meta | 2 +- .../open-data/render/tpls/friendRank.js.meta | 2 +- .../open-data/render/tpls/tips.js.meta | 2 +- Runtime/wechat-default/plugin-config.js.meta | 2 +- Runtime/wechat-default/plugins.meta | 2 +- .../plugins/check-update.js.meta | 2 +- .../plugins/screen-adapter.js.meta | 2 +- .../wechat-default/project.config.json.meta | 2 +- Runtime/wechat-default/texture-config.js.meta | 2 +- .../wechat-default/unity-namespace.js.meta | 2 +- Runtime/wechat-default/unity-sdk.meta | 2 +- .../wechat-default/unity-sdk/TCPSocket.meta | 2 +- .../unity-sdk/TCPSocket/index.js.meta | 2 +- .../wechat-default/unity-sdk/UDPSocket.meta | 2 +- .../unity-sdk/UDPSocket/index.js.meta | 2 +- Runtime/wechat-default/unity-sdk/ad.js.meta | 2 +- Runtime/wechat-default/unity-sdk/audio.meta | 2 +- .../unity-sdk/audio/common.js.meta | 2 +- .../unity-sdk/audio/const.js.meta | 2 +- .../unity-sdk/audio/index.js.meta | 2 +- .../unity-sdk/audio/inner-audio.js.meta | 2 +- .../unity-sdk/audio/store.js.meta | 2 +- .../unity-sdk/audio/unity-audio.js.meta | 2 +- .../unity-sdk/audio/utils.js.meta | 2 +- .../unity-sdk/authorize.js.meta | 2 +- .../wechat-default/unity-sdk/bluetooth.meta | 2 +- .../unity-sdk/bluetooth/index.js.meta | 2 +- .../wechat-default/unity-sdk/camera.js.meta | 2 +- .../unity-sdk/canvas-context.js.meta | 2 +- .../wechat-default/unity-sdk/canvas.js.meta | 2 +- Runtime/wechat-default/unity-sdk/chat.js.meta | 2 +- .../wechat-default/unity-sdk/cloud.js.meta | 2 +- Runtime/wechat-default/unity-sdk/conf.js.meta | 2 +- .../unity-sdk/file-info.js.meta | 2 +- Runtime/wechat-default/unity-sdk/fix.js.meta | 2 +- Runtime/wechat-default/unity-sdk/font.meta | 2 +- .../unity-sdk/font/fix-cmap.js.meta | 2 +- .../unity-sdk/font/index.js.meta | 2 +- .../unity-sdk/font/read-metrics.js.meta | 2 +- .../unity-sdk/font/split-sc.js.meta | 2 +- .../unity-sdk/font/util.js.meta | 2 +- Runtime/wechat-default/unity-sdk/fs.js.meta | 2 +- .../unity-sdk/game-club.js.meta | 2 +- .../unity-sdk/game-recorder.js.meta | 2 +- .../wechat-default/unity-sdk/gyroscope.meta | 2 +- .../unity-sdk/gyroscope/index.js.meta | 2 +- .../wechat-default/unity-sdk/index.js.meta | 2 +- .../wechat-default/unity-sdk/logger.js.meta | 2 +- .../unity-sdk/mobileKeyboard.meta | 2 +- .../unity-sdk/mobileKeyboard/index.js.meta | 2 +- .../unity-sdk/module-helper.js.meta | 2 +- .../unity-sdk/open-data.js.meta | 2 +- .../wechat-default/unity-sdk/recorder.js.meta | 2 +- .../wechat-default/unity-sdk/resType.js.meta | 2 +- .../unity-sdk/resTypeOther.js.meta | 2 +- .../wechat-default/unity-sdk/response.js.meta | 2 +- Runtime/wechat-default/unity-sdk/sdk.js.meta | 2 +- .../wechat-default/unity-sdk/share.js.meta | 2 +- .../wechat-default/unity-sdk/storage.js.meta | 2 +- .../wechat-default/unity-sdk/texture.js.meta | 2 +- Runtime/wechat-default/unity-sdk/touch.meta | 2 +- .../unity-sdk/touch/index.js.meta | 2 +- .../unity-sdk/upload-file.js.meta | 2 +- .../wechat-default/unity-sdk/userinfo.js.meta | 2 +- Runtime/wechat-default/unity-sdk/util.js.meta | 2 +- .../wechat-default/unity-sdk/utils.js.meta | 2 +- .../wechat-default/unity-sdk/video.js.meta | 2 +- Runtime/wechat-default/unity-sdk/video.meta | 2 +- .../unity-sdk/video/index.js.meta | 2 +- Runtime/wechat-default/wasmcode.meta | 2 +- Runtime/wechat-default/wasmcode/game.js.meta | 2 +- Runtime/wechat-default/weapp-adapter.js.meta | 2 +- Runtime/wechat-default/workers.meta | 2 +- Runtime/wechat-default/workers/response.meta | 2 +- .../workers/response/index.js.meta | 2 +- package.json | 15 +- 188 files changed, 2916 insertions(+), 169 deletions(-) create mode 100644 Editor/PCHighPerformance/PCHPBuildPreProcessor.cs create mode 100644 Editor/PCHighPerformance/PCHPBuildPreProcessor.cs.meta create mode 100644 Editor/PCHighPerformance/README_AutoInjection.md create mode 100644 Editor/PCHighPerformance/README_AutoInjection.md.meta create mode 100644 Editor/PCHighPerformance/TROUBLESHOOTING.md create mode 100644 Editor/PCHighPerformance/TROUBLESHOOTING.md.meta create mode 100644 Editor/PCHighPerformance/WXApkgPacker.cs create mode 100644 Editor/PCHighPerformance/WXApkgPacker.cs.meta create mode 100644 Editor/PCHighPerformance/WXPCHPBuildHelper.cs create mode 100644 Editor/PCHighPerformance/WXPCHPBuildHelper.cs.meta create mode 100644 Editor/PCHighPerformance/WXPCHPWindow.cs create mode 100644 Editor/PCHighPerformance/WXPCHPWindow.cs.meta create mode 100644 Editor/PCHighPerformance/WXPCSettingHelper.cs create mode 100644 Editor/PCHighPerformance/WXPCSettingHelper.cs.meta create mode 100644 Runtime/WXPCHPInitScript.cs create mode 100644 Runtime/WXPCHPInitScript.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 92ac350d7..4eb015ed4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Removed - 删除功能/接口 Fixed - 修复问题 Others - 其他 --> -## 2026-3-15 v0.1.32 【普通更新】 +## 2026-3-16 v0.1.32 【普通更新】 ### Feature * 普通:更新基础库版本 * 普通:擂台赛api新增subScoreKey参数 diff --git a/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs b/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs new file mode 100644 index 000000000..2185226bf --- /dev/null +++ b/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs @@ -0,0 +1,174 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEditor.SceneManagement; +using System.IO; + +namespace WeChatWASM +{ + /// + /// PC高性能小游戏构建预处理器 + /// 负责在构建前向首场景注入 WXPCHPInitScript + /// + public class PCHPBuildPreProcessor : IPreprocessBuildWithReport + { + // SDK 脚本名称常量 + private const string SDK_CLASS_NAME = "WeChatWASM.WXPCHPInitScript"; + private const string SDK_GAMEOBJECT_NAME = "WXPCHPInitScript"; + + public int callbackOrder => 0; + + public void OnPreprocessBuild(BuildReport report) + { + Debug.Log("========================================"); + Debug.Log("[PC高性能小游戏] PCHPBuildPreProcessor.OnPreprocessBuild 被调用"); + Debug.Log("========================================"); + + // 只处理 Windows/Mac Standalone 构建 + var buildTarget = report.summary.platform; + if (buildTarget != BuildTarget.StandaloneWindows64 && + buildTarget != BuildTarget.StandaloneOSX) + { + Debug.LogWarning($"[PC高性能小游戏] 当前平台 {buildTarget} 不是 Windows/Mac,跳过预处理"); + return; + } + + Debug.Log("[PC高性能小游戏] 开始预处理构建..."); + + try + { + Debug.Log("[PC高性能小游戏] → 步骤1: 检查 WXPCHPInitScript 脚本是否存在"); + EnsureSDKScriptExists(); + + Debug.Log("[PC高性能小游戏] → 步骤2: 向首场景注入 SDK GameObject"); + InjectSDKToFirstScene(); + + Debug.Log("[PC高性能小游戏] ✅ 预处理完成!"); + } + catch (System.Exception e) + { + Debug.LogError("========================================"); + Debug.LogError($"[PC高性能小游戏] ❌ 预处理失败: {e.Message}\n{e.StackTrace}"); + Debug.LogError("========================================"); + throw; + } + } + + /// + /// 在所有程序集中查找类型 + /// + private System.Type FindTypeInAllAssemblies(string typeName) + { + foreach (var assembly in System.AppDomain.CurrentDomain.GetAssemblies()) + { + var type = assembly.GetType(typeName); + if (type != null) + { + return type; + } + } + return null; + } + + /// + /// 确保 WXPCHPInitScript 脚本存在 + /// + private void EnsureSDKScriptExists() + { + var sdkType = FindTypeInAllAssemblies(SDK_CLASS_NAME); + if (sdkType != null) + { + Debug.Log($"[PC高性能小游戏] ✅ WXPCHPInitScript 脚本已加载 (程序集: {sdkType.Assembly.GetName().Name})"); + return; + } + + // 脚本应该在 SDK Runtime 目录,如果找不到说明 SDK 安装有问题 + Debug.LogError("[PC高性能小游戏] ❌ 找不到 WXPCHPInitScript 类型"); + Debug.LogError("[PC高性能小游戏] 请确保 WX-WASM-SDK-V2 已正确安装"); + throw new BuildFailedException("[PC高性能小游戏] 缺少 WXPCHPInitScript 脚本,请检查 SDK 安装"); + } + + /// + /// 向第一个启用的场景注入 SDK GameObject + /// + private void InjectSDKToFirstScene() + { + var firstScenePath = GetFirstEnabledScene(); + if (string.IsNullOrEmpty(firstScenePath)) + { + Debug.LogWarning("[PC高性能小游戏] 没有找到启用的场景,跳过注入"); + return; + } + + var currentScenes = EditorSceneManager.GetSceneManagerSetup(); + var scene = EditorSceneManager.OpenScene(firstScenePath, OpenSceneMode.Single); + + // 删除旧的对象(兼容从 EmbeddedAppletSDK 迁移) + var oldSDK = GameObject.Find("EmbeddedAppletSDK"); + if (oldSDK != null) + { + Debug.Log("[PC高性能小游戏] 删除旧的 EmbeddedAppletSDK 对象"); + GameObject.DestroyImmediate(oldSDK); + } + + // 检查是否已存在新的 SDK 对象 + var existingSDK = GameObject.Find(SDK_GAMEOBJECT_NAME); + if (existingSDK != null) + { + Debug.Log($"[PC高性能小游戏] 场景中已存在 {SDK_GAMEOBJECT_NAME},重新创建"); + GameObject.DestroyImmediate(existingSDK); + } + + // 创建 GameObject 并添加组件 + var sdkObject = new GameObject(SDK_GAMEOBJECT_NAME); + var sdkType = FindTypeInAllAssemblies(SDK_CLASS_NAME); + + if (sdkType != null) + { + var assemblyName = sdkType.Assembly.GetName().Name; + Debug.Log($"[PC高性能小游戏] 找到 WXPCHPInitScript,程序集: {assemblyName}"); + + if (assemblyName.Contains("Editor")) + { + Debug.LogError("[PC高性能小游戏] ❌ WXPCHPInitScript 在 Editor 程序集中!"); + GameObject.DestroyImmediate(sdkObject); + throw new BuildFailedException("[PC高性能小游戏] WXPCHPInitScript 必须在 Runtime 程序集"); + } + + sdkObject.AddComponent(sdkType); + Debug.Log($"[PC高性能小游戏] ✅ 已在 {scene.name} 中创建 {SDK_GAMEOBJECT_NAME} 并添加组件"); + } + else + { + Debug.LogError("[PC高性能小游戏] ❌ 找不到 WXPCHPInitScript 类型"); + GameObject.DestroyImmediate(sdkObject); + throw new BuildFailedException("[PC高性能小游戏] 无法找到 WXPCHPInitScript 组件"); + } + + EditorSceneManager.MarkSceneDirty(scene); + EditorSceneManager.SaveScene(scene); + RestoreScenes(currentScenes); + } + + private string GetFirstEnabledScene() + { + foreach (var scene in EditorBuildSettings.scenes) + { + if (scene.enabled) + { + return scene.path; + } + } + return null; + } + + private void RestoreScenes(UnityEditor.SceneManagement.SceneSetup[] setup) + { + if (setup != null && setup.Length > 0) + { + EditorSceneManager.RestoreSceneManagerSetup(setup); + } + } + } +} diff --git a/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs.meta b/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs.meta new file mode 100644 index 000000000..6e74db546 --- /dev/null +++ b/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b2764f66c7a7ee9dfaf53ffe5f6215d0 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/PCHighPerformance/README_AutoInjection.md b/Editor/PCHighPerformance/README_AutoInjection.md new file mode 100644 index 000000000..f957d2041 --- /dev/null +++ b/Editor/PCHighPerformance/README_AutoInjection.md @@ -0,0 +1,110 @@ +# PC高性能小游戏 - 自动化构建注入 + +## 📂 文件结构 + +``` +WX-WASM-SDK-V2/ +├── Editor/PCHighPerformance/ +│ ├── PCHPBuildPreProcessor.cs # 构建预处理器(自动注入) +│ ├── PCHPDebugHelper.cs # 调试工具 +│ ├── WXPCSettingHelper.cs # 构建配置助手 +│ └── WXEditorPCHPWindow.cs # 编辑器窗口 +└── Runtime/ + └── WXPCHPInitScript.cs # SDK 运行时脚本 +``` + +--- + +## 🎯 功能说明 + +### 自动注入机制 + +**触发时机**:开发者点击「生成并转换」按钮,Unity 开始构建 Windows/macOS 平台前 + +**工作流程**: + +``` +构建开始 + ↓ +PCHPBuildPreProcessor.OnPreprocessBuild() 触发 + ↓ +Step 1: 检查 WXPCHPInitScript 是否已加载 + ├── 已加载 → 继续 + └── 未加载 → 报错中断(SDK 安装问题) + ↓ +Step 2: 打开首个启用场景 + ↓ +Step 3: 检查场景是否已有 "WXPCHPInitScript" GameObject + ├── 有 → 删除重建 + └── 没有 → 创建新 GameObject + 添加 WXPCHPInitScript 组件 + ↓ +Step 4: 保存场景并恢复原始布局 + ↓ +继续正常构建流程 +``` + +--- + +## ✅ 关键特性 + +1. **零侵入**:不修改开发者当前打开的场景 +2. **智能检测**:自动检测是否已存在脚本/对象 +3. **SDK 内置**:脚本位于 SDK Runtime 目录,无需复制到用户项目 +4. **命名空间隔离**:使用 `WeChatWASM` 命名空间避免冲突 + +--- + +## 🔧 配置说明 + +### 脚本位置 + +``` +Assets/WX-WASM-SDK-V2/Runtime/WXPCHPInitScript.cs +``` + +**类名**:`WeChatWASM.WXPCHPInitScript` + +**作用**:运行时初始化 PC 高性能小游戏 SDK,与宿主程序通信 + +--- + +## 🐛 常见问题 + +### Q: 为什么导出的工程没有 SDK 对象? + +检查 Console 日志: +- ✅ `[PC高性能小游戏] ✅ 已在 XXX 中创建 WXPCHPInitScript 并添加组件` → 成功 +- ⚠️ `找不到 WXPCHPInitScript 类型` → SDK 未正确安装 + +### Q: DLL 加载失败? + +**原因**:`direct_applet_sdk.dll` 必须在 **运行时** 的根目录(与 .exe 同级) + +**解决**:确保宿主程序启动时提供 DLL + +--- + +## 📝 技术细节 + +| 项 | 值 | +|---|---| +| 触发接口 | `IPreprocessBuildWithReport` | +| 回调优先级 | `callbackOrder = 0` | +| 支持平台 | Windows x64, macOS | +| 场景修改策略 | 临时打开 → 注入 → 保存 → 恢复 | +| 类全名 | `WeChatWASM.WXPCHPInitScript` | + +--- + +## 🔄 更新日志 + +### v1.1.0 (2026-03-02) +- ✅ 重命名 `EmbeddedAppletSDK` → `WXPCHPInitScript` +- ✅ 迁移脚本到 Runtime 目录(解决 Editor 脚本无法挂载问题) +- ✅ 添加 `WeChatWASM` 命名空间 +- ✅ 移除模板复制机制(脚本现在内置于 SDK) + +### v1.0.0 (2026-03-02) +- ✅ 实现自动注入 EmbeddedAppletSDK GameObject +- ✅ 智能检测并复制模板脚本 +- ✅ 兼容 Windows 和 macOS 构建 diff --git a/Editor/PCHighPerformance/README_AutoInjection.md.meta b/Editor/PCHighPerformance/README_AutoInjection.md.meta new file mode 100644 index 000000000..f42ff1083 --- /dev/null +++ b/Editor/PCHighPerformance/README_AutoInjection.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: aacc596790ffe1aad08acb624adcdfaa +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/PCHighPerformance/TROUBLESHOOTING.md b/Editor/PCHighPerformance/TROUBLESHOOTING.md new file mode 100644 index 000000000..6f2d05f13 --- /dev/null +++ b/Editor/PCHighPerformance/TROUBLESHOOTING.md @@ -0,0 +1,152 @@ +# PC高性能小游戏 - 问题排查指南 + +## 🐛 问题1:设置面板数据被清空 + +### 原因 +`OnLostFocus()` 时机不对,输入框的值可能还未同步到 `formInputData` + +### 解决方案 ✅ +已修复:在 `OnSettingsGUI()` 中添加 `GUI.changed` 检测,每次输入时自动保存 + +--- + +## 🐛 问题2:ShowInfo 逻辑未执行 + +### 可能原因 + +#### 1. DLL 未找到 (最常见 90%) +**症状**:运行 .exe 后没有任何弹窗 +**原因**:`direct_applet_sdk.dll` 不在 .exe 同级目录 + +**验证**: +```bash +# 检查导出目录结构 +导出路径/ +├── YourGame.exe +├── direct_applet_sdk.dll ← 必须存在 +└── YourGame_Data/ +``` + +**解决**: +- 确保 DLL 在运行时根目录 +- 查看 Unity Player.log: + - Windows: `%APPDATA%\..\LocalLow\\\Player.log` + - 搜索关键字: `[WXPCHPInitScript]` 或 `DllNotFoundException` + +--- + +#### 2. GameObject 未注入 (10%) +**症状**:构建后场景中没有 `WXPCHPInitScript` 对象 + +**验证**:使用调试工具 +``` +Unity 菜单 → 微信小游戏 → PC高性能调试 → 检查SDK注入状态 +``` + +**可能的问题**: +- ❌ Build Settings 中没有启用场景 +- ❌ 构建前 `PCHPBuildPreProcessor` 未执行 +- ❌ SDK 未正确安装 + +**解决**: +1. 确保 Build Settings 有至少一个启用场景 +2. 查看 Console 日志: + ``` + [PC高性能小游戏] 开始预处理构建... + [PC高性能小游戏] ✅ 已在 XXX 中创建 WXPCHPInitScript 并添加组件 + ``` + +--- + +## 🔍 调试步骤(按顺序) + +### Step 1: 检查 SDK 注入状态 +``` +Unity 菜单 → 微信小游戏 → PC高性能调试 → 检查SDK注入状态 +``` + +✅ 正常输出示例: +``` +[构建场景] 启用的场景数: 1 + ✅ 首场景: Assets/Scenes/Main.unity + ✅ 找到 SDK GameObject: WXPCHPInitScript + ✅ 挂载的脚本: WeChatWASM.WXPCHPInitScript + +[类型加载检查] + ✅ WXPCHPInitScript 类型已加载 + 程序集: WxWasmSDKRuntime +``` + +--- + +### Step 2: 检查导出路径 +``` +Unity 菜单 → 微信小游戏 → PC高性能调试 → 查看导出路径 +``` + +确认: +- ✅ 目录存在 +- ✅ 有 .exe 文件 + +--- + +### Step 3: 运行 .exe 并查看日志 + +**日志位置**: +``` +Windows: %APPDATA%\..\LocalLow\YourCompany\YourProduct\Player.log +Mac: ~/Library/Logs/Company Name/Product Name/Player.log +``` + +**搜索关键字**: +``` +[WXPCHPInitScript] +DllNotFoundException +InitEmbeddedGameSDK +``` + +**正常日志**: +``` +[WXPCHPInitScript] ========== Awake 被调用 ========== +[WXPCHPInitScript] GameObject 名称: WXPCHPInitScript +[WXPCHPInitScript] ========== 开始初始化 ========== +[WXPCHPInitScript] Step 1: 调用 InitEmbeddedGameSDK +[WXPCHPInitScript] InitEmbeddedGameSDK 成功 +... +``` + +**异常日志**: +``` +DllNotFoundException: Unable to load DLL 'direct_applet_sdk.dll' + → 解决: 复制 DLL 到 .exe 同级目录 +``` + +--- + +## 📝 快速检查清单 + +- [ ] Build Settings 中有启用的场景 +- [ ] 构建时 Console 有 `[PC高性能小游戏] 预处理完成!` 日志 +- [ ] 导出目录包含 `.exe` 和 `direct_applet_sdk.dll` +- [ ] 运行 .exe 后有弹窗或 Player.log 有日志 + +--- + +## 🛠️ 调试工具菜单 + +| 菜单项 | 功能 | +|--------|------| +| 检查SDK注入状态 | 验证场景中是否有 SDK 对象和脚本 | +| 查看导出路径 | 显示配置的导出路径和状态 | +| 打开导出目录 | 在文件管理器中打开导出目录 | + +--- + +## 💡 常见错误代码 + +| 错误信息 | 原因 | 解决方法 | +|----------|------|----------| +| `DllNotFoundException` | DLL 未找到 | 复制 DLL 到 .exe 同级目录 | +| `EntryPointNotFoundException` | 函数不存在 | 检查 DLL 版本是否匹配 | +| `找不到 WXPCHPInitScript 类型` | SDK 未安装 | 重新导入 WX-WASM-SDK-V2 | +| `GetActiveWindow 返回空句柄` | 窗口未创建 | 延迟初始化或检查 Unity Player 设置 | diff --git a/Editor/PCHighPerformance/TROUBLESHOOTING.md.meta b/Editor/PCHighPerformance/TROUBLESHOOTING.md.meta new file mode 100644 index 000000000..2147b9adf --- /dev/null +++ b/Editor/PCHighPerformance/TROUBLESHOOTING.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b57398b893716f5822f5e196466fee6 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/PCHighPerformance/WXApkgPacker.cs b/Editor/PCHighPerformance/WXApkgPacker.cs new file mode 100644 index 000000000..2b63f65cd --- /dev/null +++ b/Editor/PCHighPerformance/WXApkgPacker.cs @@ -0,0 +1,267 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using UnityEngine; + +namespace WeChatWASM +{ + /// + /// wxapkg 文件打包器 + /// 将目录内容打包成 .wxapkg 格式 + /// + /// wxapkg 格式结构: + /// 1. 头部段 (14 字节) + /// - 起始标志: 1 字节 (0xBE) + /// - 未知字段: 4 字节 (固定为 0) + /// - 结束标志: 1 字节 (0xED) + /// - 索引段长度: 4 字节 (大端序) + /// - 数据段长度: 4 字节 (大端序) + /// 2. 索引段 + /// - 文件数量: 4 字节 (大端序) + /// - 文件信息块序列(每个文件): + /// - 文件名长度: 4 字节 (大端序) + /// - 文件名: 可变长度 (UTF-8) + /// - 文件偏移: 4 字节 (大端序) + /// - 文件长度: 4 字节 (大端序) + /// 3. 数据段 + /// - 实际文件内容的二进制数据 + /// + public static class WXApkgPacker + { + private const byte HEADER_MARK_START = 0xBE; + private const byte HEADER_MARK_END = 0xED; + private const int HEADER_SIZE = 14; + + /// + /// 文件信息结构 + /// + private class FileInfo + { + public string RelativePath; // 相对路径(以 / 开头) + public string FullPath; // 完整路径 + public int Size; // 文件大小 + public int Offset; // 在数据段中的偏移 + } + + /// + /// 将目录打包成 wxapkg 文件 + /// + /// 源目录路径 + /// 输出的 wxapkg 文件路径 + /// 是否成功 + public static bool Pack(string sourceDir, string outputPath) + { + try + { + if (!Directory.Exists(sourceDir)) + { + Debug.LogError($"[WXApkgPacker] 源目录不存在: {sourceDir}"); + return false; + } + + // 收集所有文件信息 + var files = CollectFiles(sourceDir); + if (files.Count == 0) + { + Debug.LogError($"[WXApkgPacker] 目录为空: {sourceDir}"); + return false; + } + + Debug.Log($"[WXApkgPacker] 收集到 {files.Count} 个文件"); + + // 构建索引段 + byte[] indexData = BuildIndexSection(files); + + // 构建数据段 + byte[] dataSection = BuildDataSection(files); + + // 构建头部 + byte[] header = BuildHeader(indexData.Length, dataSection.Length); + + // 确保输出目录存在 + string outputDir = Path.GetDirectoryName(outputPath); + if (!string.IsNullOrEmpty(outputDir) && !Directory.Exists(outputDir)) + { + Directory.CreateDirectory(outputDir); + } + + // 写入文件 + using (var fs = new FileStream(outputPath, FileMode.Create, FileAccess.Write)) + { + fs.Write(header, 0, header.Length); + fs.Write(indexData, 0, indexData.Length); + fs.Write(dataSection, 0, dataSection.Length); + } + + long totalSize = header.Length + indexData.Length + dataSection.Length; + Debug.Log($"[WXApkgPacker] 打包完成: {outputPath}"); + Debug.Log($"[WXApkgPacker] 文件大小: {totalSize / 1024.0 / 1024.0:F2} MB"); + + return true; + } + catch (Exception e) + { + Debug.LogError($"[WXApkgPacker] 打包失败: {e.Message}"); + Debug.LogException(e); + return false; + } + } + + /// + /// 收集目录下所有文件 + /// + private static List CollectFiles(string sourceDir) + { + var files = new List(); + var allFiles = Directory.GetFiles(sourceDir, "*", SearchOption.AllDirectories); + + foreach (var filePath in allFiles) + { + // 跳过 .DS_Store 等隐藏文件 + string fileName = Path.GetFileName(filePath); + if (fileName.StartsWith(".")) + { + continue; + } + + // 计算相对路径(使用正斜杠,以 / 开头) + string relativePath = filePath.Substring(sourceDir.Length); + relativePath = relativePath.Replace('\\', '/'); + if (!relativePath.StartsWith("/")) + { + relativePath = "/" + relativePath; + } + + var info = new System.IO.FileInfo(filePath); + files.Add(new FileInfo + { + RelativePath = relativePath, + FullPath = filePath, + Size = (int)info.Length + }); + } + + // 按路径排序,保持一致性 + files.Sort((a, b) => string.Compare(a.RelativePath, b.RelativePath, StringComparison.Ordinal)); + + return files; + } + + /// + /// 构建头部段 (14 字节) + /// + private static byte[] BuildHeader(int indexLength, int dataLength) + { + byte[] header = new byte[HEADER_SIZE]; + + // 起始标志 + header[0] = HEADER_MARK_START; + + // 4 字节未知字段 (固定为 0) + header[1] = 0; + header[2] = 0; + header[3] = 0; + header[4] = 0; + + // 结束标志 + header[5] = HEADER_MARK_END; + + // 索引段长度 (大端序) + WriteInt32BE(header, 6, indexLength); + + // 数据段长度 (大端序) + WriteInt32BE(header, 10, dataLength); + + return header; + } + + /// + /// 构建索引段 + /// + private static byte[] BuildIndexSection(List files) + { + using (var ms = new MemoryStream()) + using (var writer = new BinaryWriter(ms)) + { + // 文件数量 (大端序) + WriteInt32BE(writer, files.Count); + + // 计算数据段起始偏移 + // 偏移量 = 头部大小 + 索引段大小 + // 需要先计算索引段大小 + int indexSize = 4; // 文件数量 + foreach (var file in files) + { + byte[] nameBytes = Encoding.UTF8.GetBytes(file.RelativePath); + indexSize += 4 + nameBytes.Length + 4 + 4; // nameLen + name + offset + size + } + + int dataOffset = HEADER_SIZE + indexSize; + + // 写入每个文件的索引信息 + foreach (var file in files) + { + byte[] nameBytes = Encoding.UTF8.GetBytes(file.RelativePath); + + // 文件名长度 (大端序) + WriteInt32BE(writer, nameBytes.Length); + + // 文件名 + writer.Write(nameBytes); + + // 文件偏移 (大端序) + file.Offset = dataOffset; + WriteInt32BE(writer, dataOffset); + + // 文件大小 (大端序) + WriteInt32BE(writer, file.Size); + + // 更新下一个文件的偏移 + dataOffset += file.Size; + } + + return ms.ToArray(); + } + } + + /// + /// 构建数据段 + /// + private static byte[] BuildDataSection(List files) + { + using (var ms = new MemoryStream()) + { + foreach (var file in files) + { + byte[] content = File.ReadAllBytes(file.FullPath); + ms.Write(content, 0, content.Length); + } + + return ms.ToArray(); + } + } + + /// + /// 写入 32 位大端序整数到字节数组 + /// + private static void WriteInt32BE(byte[] buffer, int offset, int value) + { + buffer[offset] = (byte)((value >> 24) & 0xFF); + buffer[offset + 1] = (byte)((value >> 16) & 0xFF); + buffer[offset + 2] = (byte)((value >> 8) & 0xFF); + buffer[offset + 3] = (byte)(value & 0xFF); + } + + /// + /// 写入 32 位大端序整数到流 + /// + private static void WriteInt32BE(BinaryWriter writer, int value) + { + writer.Write((byte)((value >> 24) & 0xFF)); + writer.Write((byte)((value >> 16) & 0xFF)); + writer.Write((byte)((value >> 8) & 0xFF)); + writer.Write((byte)(value & 0xFF)); + } + } +} diff --git a/Editor/PCHighPerformance/WXApkgPacker.cs.meta b/Editor/PCHighPerformance/WXApkgPacker.cs.meta new file mode 100644 index 000000000..589954af2 --- /dev/null +++ b/Editor/PCHighPerformance/WXApkgPacker.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 01b846953f0b79ebc3a6176ea11b6eb6 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/PCHighPerformance/WXPCHPBuildHelper.cs b/Editor/PCHighPerformance/WXPCHPBuildHelper.cs new file mode 100644 index 000000000..edf1c4176 --- /dev/null +++ b/Editor/PCHighPerformance/WXPCHPBuildHelper.cs @@ -0,0 +1,395 @@ +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using UnityEditor; +using UnityEditor.Build.Reporting; + +namespace WeChatWASM +{ + /// + /// PC高性能小游戏构建辅助类 + /// 用于在微信小游戏转换工具面板中集成PC高性能模式构建 + /// + public static class WXPCHPBuildHelper + { + /// + /// PC高性能构建产物目录名 + /// + public const string PCHPOutputDir = "pchpcode"; + + /// + /// 检查是否开启了PC高性能模式 + /// + public static bool IsPCHighPerformanceEnabled() + { + var config = UnityUtil.GetEditorConf(); + bool enabled = config != null && config.ProjectConf.EnablePCHighPerformance; + Debug.Log($"[PC高性能模式] 检查配置: config={config != null}, EnablePCHighPerformance={config?.ProjectConf?.EnablePCHighPerformance}, 结果={enabled}"); + return enabled; + } + + /// + /// 执行PC高性能构建 + /// + /// 导出基础路径(来自小游戏面板配置) + /// 构建是否成功 + public static bool BuildPCHighPerformance(string exportBasePath) + { + if (string.IsNullOrEmpty(exportBasePath)) + { + Debug.LogError("[PC高性能模式] 导出路径为空,无法构建"); + return false; + } + + // 确定构建目标平台 + var currentPlatform = Application.platform; + BuildTarget buildTarget; + string platformName; + + if (currentPlatform == RuntimePlatform.OSXEditor) + { + buildTarget = BuildTarget.StandaloneOSX; + platformName = "Mac"; + } + else + { + buildTarget = BuildTarget.StandaloneWindows64; + platformName = "Windows"; + } + + // 构建输出路径:直接放在 minigame/pchpcode 目录下 + string pchpOutputPath = Path.Combine(exportBasePath, WXConvertCore.miniGameDir, PCHPOutputDir); + + Debug.Log($"[PC高性能模式] 开始构建,目标平台: {platformName}"); + Debug.Log($"[PC高性能模式] 输出路径: {pchpOutputPath}"); + + // 保存当前构建目标 + var originalTarget = EditorUserBuildSettings.activeBuildTarget; + var originalTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; + + try + { + // 切换构建目标(如果需要) + if (originalTarget != buildTarget) + { + Debug.Log($"[PC高性能模式] 切换构建目标: {originalTarget} -> {buildTarget}"); + if (!EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, buildTarget)) + { + Debug.LogError("[PC高性能模式] 切换构建目标失败"); + return false; + } + } + + // 配置 Player Settings + ConfigurePlayerSettings(); + + // 确保输出目录存在 + if (!Directory.Exists(pchpOutputPath)) + { + Directory.CreateDirectory(pchpOutputPath); + } + + // 获取可执行文件路径 + string executablePath = GetExecutablePath(pchpOutputPath, buildTarget); + + // 获取场景列表 + var scenes = GetEnabledScenes(); + if (scenes.Length == 0) + { + Debug.LogError("[PC高性能模式] 没有启用的场景,请在 Build Settings 中添加场景"); + EditorUtility.DisplayDialog("PC高性能模式构建失败", "没有启用的场景,请在 Build Settings 中添加场景", "确定"); + return false; + } + + // 构建选项 + var buildOptions = BuildOptions.None; + + // 执行构建 + Debug.Log($"[PC高性能模式] 执行构建,输出: {executablePath}"); + var report = BuildPipeline.BuildPlayer(scenes, executablePath, buildTarget, buildOptions); + + // 检查构建结果 + if (report.summary.result == BuildResult.Succeeded) + { + Debug.Log($"[PC高性能模式] 构建成功! 耗时: {report.summary.totalTime.TotalSeconds:F2}秒"); + Debug.Log($"[PC高性能模式] 输出路径: {pchpOutputPath}"); + + // 打包成 wxapkg 格式(先打包到临时位置) + string tempWxapkgPath = Path.Combine(exportBasePath, WXConvertCore.miniGameDir, $"{PCHPOutputDir}_temp.wxapkg"); + string finalWxapkgPath = Path.Combine(pchpOutputPath, $"{PCHPOutputDir}.wxapkg"); + + Debug.Log($"[PC高性能模式] 开始打包 wxapkg..."); + + if (WXApkgPacker.Pack(pchpOutputPath, tempWxapkgPath)) + { + // 删除原始构建材料 + Debug.Log($"[PC高性能模式] 清理原始构建材料..."); + Directory.Delete(pchpOutputPath, true); + + // 重新创建目录并移动 wxapkg + Directory.CreateDirectory(pchpOutputPath); + File.Move(tempWxapkgPath, finalWxapkgPath); + + // 创建空的 game.js 文件 + string gameJsPath = Path.Combine(pchpOutputPath, "game.js"); + File.WriteAllText(gameJsPath, ""); + Debug.Log($"[PC高性能模式] 已创建 game.js: {gameJsPath}"); + + Debug.Log($"[PC高性能模式] wxapkg 打包完成: {finalWxapkgPath}"); + } + else + { + Debug.LogWarning("[PC高性能模式] wxapkg 打包失败,保留原始构建产物"); + if (File.Exists(tempWxapkgPath)) + { + File.Delete(tempWxapkgPath); + } + } + + return true; + } + else + { + Debug.LogError($"[PC高性能模式] 构建失败: {report.summary.result}"); + foreach (var step in report.steps) + { + foreach (var message in step.messages) + { + if (message.type == LogType.Error) + { + Debug.LogError($"[PC高性能模式] 构建错误: {message.content}"); + } + } + } + return false; + } + } + catch (System.Exception e) + { + Debug.LogError($"[PC高性能模式] 构建异常: {e.Message}"); + Debug.LogException(e); + return false; + } + finally + { + // 恢复到小游戏构建目标,确保微信小游戏转换工具能正常加载 + RestoreToMiniGamePlatform(); + } + } + + /// + /// 恢复到小游戏平台 + /// 团结引擎使用 WeixinMiniGame,Unity 使用 WebGL + /// + private static void RestoreToMiniGamePlatform() + { +#if TUANJIE_2022_3_OR_NEWER + // 团结引擎:切换到 WeixinMiniGame 平台 + if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.WeixinMiniGame) + { + Debug.Log($"[PC高性能模式] 切换回 WeixinMiniGame 构建目标"); + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.WeixinMiniGame, BuildTarget.WeixinMiniGame); + } + + // 激活微信小游戏子平台 + ActivateWeixinSubplatform(); +#else + // Unity:切换到 WebGL 平台 + if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.WebGL) + { + Debug.Log($"[PC高性能模式] 切换回 WebGL 构建目标"); + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.WebGL, BuildTarget.WebGL); + } +#endif + } + +#if TUANJIE_2022_3_OR_NEWER + /// + /// 激活微信小游戏子平台(通过反射兼容不同版本团结引擎) + /// + private static void ActivateWeixinSubplatform() + { + try + { + var miniGameType = typeof(PlayerSettings).GetNestedType("MiniGame"); + if (miniGameType == null) + { + Debug.LogWarning("[PC高性能模式] 未找到 PlayerSettings.MiniGame 类型"); + return; + } + + var methods = miniGameType.GetMethods(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + System.Reflection.MethodInfo setActiveMethod = null; + + foreach (var m in methods) + { + if (m.Name == "SetActiveSubplatform") + { + setActiveMethod = m; + break; + } + } + + if (setActiveMethod == null) + { + Debug.LogWarning("[PC高性能模式] 未找到 SetActiveSubplatform 方法"); + return; + } + + var parameters = setActiveMethod.GetParameters(); + if (parameters.Length != 2) + { + Debug.LogWarning($"[PC高性能模式] SetActiveSubplatform 参数数量异常: {parameters.Length}"); + return; + } + + var firstParamType = parameters[0].ParameterType; + + if (firstParamType.IsEnum) + { + // 枚举版本:尝试多个可能的枚举值名称 + string[] enumNames = { "WeChat", "Weixin", "WeiXin" }; + foreach (var name in enumNames) + { + try + { + var enumValue = System.Enum.Parse(firstParamType, name); + setActiveMethod.Invoke(null, new object[] { enumValue, true }); + Debug.Log($"[PC高性能模式] 已激活微信小游戏子平台 (enum: {name})"); + return; + } + catch { } + } + + // 如果上面都没命中,打印所有可用枚举值帮助排查 + var allNames = System.Enum.GetNames(firstParamType); + Debug.LogWarning($"[PC高性能模式] 未找到匹配的枚举值,可用值: {string.Join(", ", allNames)}"); + } + else if (firstParamType == typeof(string)) + { + // 字符串版本:按优先级尝试多个可能的标识符 + // "weixin" 与命令行参数 -minigamesubplatform weixin 一致 + string[] candidates = { "weixin", "WeChat", "Weixin", "wechat", "WeChat:微信小游戏" }; + foreach (var candidate in candidates) + { + try + { + setActiveMethod.Invoke(null, new object[] { candidate, true }); + Debug.Log($"[PC高性能模式] 已激活微信小游戏子平台 (name: {candidate})"); + return; + } + catch (System.Reflection.TargetInvocationException ex) + { + // 内部抛出异常说明名称不对,继续尝试下一个 + Debug.Log($"[PC高性能模式] 尝试子平台名称 \"{candidate}\" 失败: {ex.InnerException?.Message}"); + } + } + + Debug.LogWarning("[PC高性能模式] 所有候选子平台名称均失败"); + } + else + { + Debug.LogWarning($"[PC高性能模式] SetActiveSubplatform 参数类型未知: {firstParamType}"); + } + } + catch (System.Exception e) + { + Debug.LogWarning($"[PC高性能模式] 激活微信小游戏子平台失败: {e.Message}"); + } + } +#endif + + /// + /// 配置 Player Settings 用于 PC 高性能构建 + /// + private static void ConfigurePlayerSettings() + { + // 设置窗口模式 + PlayerSettings.fullScreenMode = FullScreenMode.Windowed; + + // 设置默认分辨率 + PlayerSettings.defaultScreenWidth = 1280; + PlayerSettings.defaultScreenHeight = 720; + + // 允许调整窗口大小 + PlayerSettings.resizableWindow = true; + + // 处理 Windows 上 Linear 色彩空间与图形 API 的兼容性问题 + if (Application.platform == RuntimePlatform.WindowsEditor) + { + ConfigureWindowsGraphicsAPI(); + } + + Debug.Log("[PC高性能模式] Player Settings 配置完成"); + } + + /// + /// 配置 Windows 图形 API,解决 Linear 色彩空间兼容性问题 + /// + private static void ConfigureWindowsGraphicsAPI() + { + // 检查当前色彩空间 + bool isLinear = PlayerSettings.colorSpace == ColorSpace.Linear; + + if (isLinear) + { + // Linear 色彩空间需要 DX11 或更高版本 + // 禁用自动图形 API,手动指定兼容的 API + PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.StandaloneWindows64, false); + + var graphicsAPIs = new UnityEngine.Rendering.GraphicsDeviceType[] + { + UnityEngine.Rendering.GraphicsDeviceType.Direct3D11, + UnityEngine.Rendering.GraphicsDeviceType.Direct3D12, + UnityEngine.Rendering.GraphicsDeviceType.Vulkan + }; + + PlayerSettings.SetGraphicsAPIs(BuildTarget.StandaloneWindows64, graphicsAPIs); + Debug.Log("[PC高性能模式] 已配置 Windows 图形 API: D3D11, D3D12, Vulkan(Linear 色彩空间兼容)"); + } + else + { + // Gamma 色彩空间,使用默认图形 API 即可 + PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.StandaloneWindows64, true); + Debug.Log("[PC高性能模式] 使用默认 Windows 图形 API(Gamma 色彩空间)"); + } + } + + /// + /// 获取可执行文件路径 + /// + private static string GetExecutablePath(string outputPath, BuildTarget target) + { + string productName = PlayerSettings.productName; + if (string.IsNullOrEmpty(productName)) + { + productName = "Game"; + } + + if (target == BuildTarget.StandaloneOSX) + { + return Path.Combine(outputPath, $"{productName}.app"); + } + else + { + return Path.Combine(outputPath, $"{productName}.exe"); + } + } + + /// + /// 获取启用的场景列表 + /// + private static string[] GetEnabledScenes() + { + var scenes = new List(); + foreach (var scene in EditorBuildSettings.scenes) + { + if (scene.enabled) + { + scenes.Add(scene.path); + } + } + return scenes.ToArray(); + } + } +} diff --git a/Editor/PCHighPerformance/WXPCHPBuildHelper.cs.meta b/Editor/PCHighPerformance/WXPCHPBuildHelper.cs.meta new file mode 100644 index 000000000..1d14e1083 --- /dev/null +++ b/Editor/PCHighPerformance/WXPCHPBuildHelper.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1455a91f4635862b70423ea92eff07bb +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/PCHighPerformance/WXPCHPWindow.cs b/Editor/PCHighPerformance/WXPCHPWindow.cs new file mode 100644 index 000000000..686396807 --- /dev/null +++ b/Editor/PCHighPerformance/WXPCHPWindow.cs @@ -0,0 +1,39 @@ +using UnityEngine; +using UnityEditor; + +namespace WeChatWASM +{ + + public class WXPCHPWin : EditorWindow + { + [MenuItem("微信小游戏 / 转换PC高性能模式", false, 3)] + public static void Open() + { + var win = GetWindow(typeof(WXPCHPWin), false, "PC高性能模式转换工具"); + win.minSize = new Vector2(350, 200); + win.position = new Rect(150, 150, 500, 300); + win.Show(); + } + + public void OnFocus() + { + WXPCSettingsHelperInterface.helper.OnFocus(); + } + + public void OnLostFocus() + { + WXPCSettingsHelperInterface.helper.OnLostFocus(); + } + + public void OnDisable() + { + WXPCSettingsHelperInterface.helper.OnDisable(); + } + + public void OnGUI() + { + WXPCSettingsHelperInterface.helper.OnSettingsGUI(this); + WXPCSettingsHelperInterface.helper.OnBuildButtonGUI(this); + } + } +} diff --git a/Editor/PCHighPerformance/WXPCHPWindow.cs.meta b/Editor/PCHighPerformance/WXPCHPWindow.cs.meta new file mode 100644 index 000000000..113a627ee --- /dev/null +++ b/Editor/PCHighPerformance/WXPCHPWindow.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b58659f7134ec221a94f184682847ae3 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/PCHighPerformance/WXPCSettingHelper.cs b/Editor/PCHighPerformance/WXPCSettingHelper.cs new file mode 100644 index 000000000..c1b7e8cc9 --- /dev/null +++ b/Editor/PCHighPerformance/WXPCSettingHelper.cs @@ -0,0 +1,488 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.Build.Reporting; +using UnityEditor.SceneManagement; +using System.IO; + +namespace WeChatWASM +{ + + [InitializeOnLoad] + public class WXPCSettingsHelperInterface + { + public static WXPCSettingHelper helper = new WXPCSettingHelper(); + } + + public class WXPCSettingHelper + { + public static string projectRootPath; + + // SDK 脚本常量 + private const string SDK_CLASS_NAME = "WeChatWASM.WXPCHPInitScript"; + private const string SDK_GAMEOBJECT_NAME = "WXPCHPInitScript"; + + public WXPCSettingHelper() + { + projectRootPath = Path.GetFullPath(Application.dataPath + "/../"); + } + + // UI 状态 + private Vector2 scrollRoot; + + // 表单数据 + private Dictionary formInputData = new Dictionary(); + + // 配置文件路径 + private string ConfigFilePath => Path.Combine(Application.dataPath, "WX-WASM-SDK-V2", "Editor", "PCHighPerformance", "PCHPConfig.json"); + + public void OnFocus() + { + LoadData(); + } + + public void OnLostFocus() + { + SaveData(); + } + + public void OnDisable() + { + SaveData(); + } + + public void OnSettingsGUI(EditorWindow window) + { + scrollRoot = EditorGUILayout.BeginScrollView(scrollRoot); + + EditorGUILayout.Space(10); + + // 标题 + var titleStyle = new GUIStyle(EditorStyles.boldLabel) + { + fontSize = 14, + alignment = TextAnchor.MiddleCenter + }; + EditorGUILayout.LabelField("PC高性能模式转换", titleStyle); + + EditorGUILayout.Space(10); + + EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); + + // 导出路径 - 支持相对路径和选择目录 + FormInputWithFolderSelectorAndHelp("exportPath", "导出路径", "Standalone 构建产物的输出目录,支持相对路径(相对项目根目录)或绝对路径"); + + EditorGUILayout.EndVertical(); + + EditorGUILayout.Space(5); + + // 提示信息 + EditorGUILayout.HelpBox( + "点击「生成并转换」将执行以下操作:\n" + + "1. 向首场景注入 WXPCHPInitScript 脚本\n" + + "2. 构建 Standalone 可执行文件\n" + + "3. SDK 初始化时会弹窗展示各步骤进度", + MessageType.Info); + + EditorGUILayout.EndScrollView(); + + // 检测 GUI 变化并自动保存 + if (GUI.changed) + { + SaveData(); + } + } + + public void OnBuildButtonGUI(EditorWindow window) + { + EditorGUILayout.Space(5); + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + + // 生成并转换按钮 + var buttonStyle = new GUIStyle(GUI.skin.button) + { + fontSize = 13, + fontStyle = FontStyle.Bold + }; + if (GUILayout.Button("生成并转换", buttonStyle, GUILayout.Width(160), GUILayout.Height(36))) + { + OnBuildButtonClicked(window); + } + + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + + GUILayout.Space(10); + } + + /// + /// 点击生成并转换按钮 + /// + private void OnBuildButtonClicked(EditorWindow window) + { + SaveData(); + + var exportPath = GetDataInput("exportPath"); + if (string.IsNullOrEmpty(exportPath.Trim())) + { + EditorUtility.DisplayDialog("错误", "请先设置导出路径", "确定"); + return; + } + + // 计算完整输出路径 + string fullExportPath; + if (Path.IsPathRooted(exportPath)) + { + fullExportPath = exportPath; + } + else + { + fullExportPath = Path.Combine(projectRootPath, exportPath); + } + + Debug.Log($"[PC高性能模式] 导出路径: {fullExportPath}"); + + // 确定构建平台 + BuildTarget buildTarget; + string platformName; + if (Application.platform == RuntimePlatform.OSXEditor) + { + buildTarget = BuildTarget.StandaloneOSX; + platformName = "macOS"; + } + else + { + buildTarget = BuildTarget.StandaloneWindows64; + platformName = "Windows x64"; + } + + Debug.Log($"[PC高性能模式] 目标平台: {platformName}"); + + try + { + // Step 1: 注入 WXPCHPInitScript 到首场景 + EditorUtility.DisplayProgressBar("PC高性能模式", "正在向首场景注入 SDK 脚本...", 0.1f); + InjectSDKToFirstScene(); + + // Step 2: 切换构建目标 + EditorUtility.DisplayProgressBar("PC高性能模式", "正在切换构建目标...", 0.2f); + var originalTarget = EditorUserBuildSettings.activeBuildTarget; + if (originalTarget != buildTarget) + { + Debug.Log($"[PC高性能模式] 切换构建目标: {originalTarget} -> {buildTarget}"); + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, buildTarget); + } + + // Step 3: 配置 Player Settings + EditorUtility.DisplayProgressBar("PC高性能模式", "正在配置 Player Settings...", 0.3f); + ConfigurePlayerSettings(); + + // Step 4: 准备输出目录 + if (!Directory.Exists(fullExportPath)) + { + Directory.CreateDirectory(fullExportPath); + } + + string productName = PlayerSettings.productName; + if (string.IsNullOrEmpty(productName)) productName = "Game"; + + string executablePath = buildTarget == BuildTarget.StandaloneOSX + ? Path.Combine(fullExportPath, $"{productName}.app") + : Path.Combine(fullExportPath, $"{productName}.exe"); + + // Step 5: 获取场景列表 + var scenes = GetEnabledScenes(); + if (scenes.Length == 0) + { + EditorUtility.ClearProgressBar(); + EditorUtility.DisplayDialog("构建失败", "没有启用的场景,请在 Build Settings 中添加场景", "确定"); + return; + } + + // Step 6: 执行构建 + EditorUtility.DisplayProgressBar("PC高性能模式", "正在构建 Standalone...", 0.5f); + Debug.Log($"[PC高性能模式] 开始构建,输出: {executablePath}"); + + var report = BuildPipeline.BuildPlayer(scenes, executablePath, buildTarget, BuildOptions.None); + + EditorUtility.ClearProgressBar(); + + if (report.summary.result == BuildResult.Succeeded) + { + Debug.Log($"[PC高性能模式] 构建成功! 耗时: {report.summary.totalTime.TotalSeconds:F2}秒"); + + if (EditorUtility.DisplayDialog("构建成功", + $"PC高性能模式构建完成!\n\n平台: {platformName}\n耗时: {report.summary.totalTime.TotalSeconds:F2}秒\n输出: {fullExportPath}", + "打开目录", "关闭")) + { + EditorUtility.RevealInFinder(fullExportPath); + } + } + else + { + Debug.LogError($"[PC高性能模式] 构建失败: {report.summary.result}"); + EditorUtility.DisplayDialog("构建失败", $"构建失败: {report.summary.result}\n\n请查看 Console 获取详细错误信息", "确定"); + } + } + catch (System.Exception e) + { + EditorUtility.ClearProgressBar(); + Debug.LogError($"[PC高性能模式] 构建异常: {e.Message}\n{e.StackTrace}"); + EditorUtility.DisplayDialog("构建异常", $"构建过程中发生异常:\n{e.Message}", "确定"); + } + } + + #region Scene Injection + + /// + /// 向首场景注入 WXPCHPInitScript + /// + private void InjectSDKToFirstScene() + { + // 查找脚本类型 + var sdkType = FindTypeInAllAssemblies(SDK_CLASS_NAME); + if (sdkType == null) + { + throw new System.Exception($"找不到 {SDK_CLASS_NAME} 类型,请确保 WX-WASM-SDK-V2 已正确安装"); + } + + var assemblyName = sdkType.Assembly.GetName().Name; + Debug.Log($"[PC高性能模式] 找到 WXPCHPInitScript,程序集: {assemblyName}"); + + if (assemblyName.Contains("Editor")) + { + throw new System.Exception("WXPCHPInitScript 在 Editor 程序集中,无法用于 Runtime 构建!请确保脚本放在 Runtime 目录下"); + } + + // 获取首场景 + var firstScenePath = GetFirstEnabledScenePath(); + if (string.IsNullOrEmpty(firstScenePath)) + { + throw new System.Exception("没有启用的场景,请在 Build Settings 中添加场景"); + } + + // 打开首场景 + var currentScenes = EditorSceneManager.GetSceneManagerSetup(); + var scene = EditorSceneManager.OpenScene(firstScenePath, OpenSceneMode.Single); + + // 清理旧对象 + var oldSDK = GameObject.Find("EmbeddedAppletSDK"); + if (oldSDK != null) + { + Debug.Log("[PC高性能模式] 删除旧的 EmbeddedAppletSDK 对象"); + GameObject.DestroyImmediate(oldSDK); + } + + // 删除已存在的同名对象(避免重复) + var existingSDK = GameObject.Find(SDK_GAMEOBJECT_NAME); + if (existingSDK != null) + { + Debug.Log($"[PC高性能模式] 删除已存在的 {SDK_GAMEOBJECT_NAME},重新创建"); + GameObject.DestroyImmediate(existingSDK); + } + + // 创建新的 GameObject 并添加 WXPCHPInitScript + var sdkObject = new GameObject(SDK_GAMEOBJECT_NAME); + sdkObject.AddComponent(sdkType); + Debug.Log($"[PC高性能模式] ✅ 已在场景 [{scene.name}] 创建 {SDK_GAMEOBJECT_NAME} 并挂载 WXPCHPInitScript"); + + // 保存场景 + EditorSceneManager.MarkSceneDirty(scene); + EditorSceneManager.SaveScene(scene); + + // 恢复场景状态 + if (currentScenes != null && currentScenes.Length > 0) + { + EditorSceneManager.RestoreSceneManagerSetup(currentScenes); + } + } + + /// + /// 在所有程序集中查找类型 + /// + private System.Type FindTypeInAllAssemblies(string typeName) + { + foreach (var assembly in System.AppDomain.CurrentDomain.GetAssemblies()) + { + var type = assembly.GetType(typeName); + if (type != null) return type; + } + return null; + } + + /// + /// 获取首个启用的场景路径 + /// + private string GetFirstEnabledScenePath() + { + foreach (var scene in EditorBuildSettings.scenes) + { + if (scene.enabled) return scene.path; + } + return null; + } + + #endregion + + #region Build Configuration + + /// + /// 配置 Player Settings + /// + private void ConfigurePlayerSettings() + { + PlayerSettings.fullScreenMode = FullScreenMode.Windowed; + PlayerSettings.defaultScreenWidth = 1280; + PlayerSettings.defaultScreenHeight = 720; + PlayerSettings.resizableWindow = true; + + // Windows Linear 色彩空间需要 DX11+ + if (Application.platform == RuntimePlatform.WindowsEditor && + PlayerSettings.colorSpace == ColorSpace.Linear) + { + PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.StandaloneWindows64, false); + PlayerSettings.SetGraphicsAPIs(BuildTarget.StandaloneWindows64, new[] + { + UnityEngine.Rendering.GraphicsDeviceType.Direct3D11, + UnityEngine.Rendering.GraphicsDeviceType.Direct3D12, + UnityEngine.Rendering.GraphicsDeviceType.Vulkan + }); + } + + Debug.Log("[PC高性能模式] Player Settings 配置完成"); + } + + /// + /// 获取启用的场景列表 + /// + private string[] GetEnabledScenes() + { + var scenes = new List(); + foreach (var scene in EditorBuildSettings.scenes) + { + if (scene.enabled) scenes.Add(scene.path); + } + return scenes.ToArray(); + } + + #endregion + + #region Data Persistence + + private void LoadData() + { + if (File.Exists(ConfigFilePath)) + { + try + { + var json = File.ReadAllText(ConfigFilePath); + var config = JsonUtility.FromJson(json); + if (config != null) + { + SetData("exportPath", config.exportPath ?? ""); + } + } + catch (System.Exception e) + { + Debug.LogWarning($"[PC高性能模式] 加载配置失败: {e.Message}"); + } + } + else + { + SetData("exportPath", ""); + } + } + + private void SaveData() + { + try + { + var config = new PCHPConfigData + { + exportPath = GetDataInput("exportPath") + }; + + var directory = Path.GetDirectoryName(ConfigFilePath); + if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) + { + Directory.CreateDirectory(directory); + } + + var json = JsonUtility.ToJson(config, true); + File.WriteAllText(ConfigFilePath, json); + } + catch (System.Exception e) + { + Debug.LogWarning($"[PC高性能模式] 保存配置失败: {e.Message}"); + } + } + + private string GetDataInput(string target) + { + return formInputData.ContainsKey(target) ? formInputData[target] : ""; + } + + private void SetData(string target, string value) + { + formInputData[target] = value; + } + + #endregion + + #region GUI Helpers + + /// + /// 绘制带文件夹选择器和帮助提示的输入框 + /// + private void FormInputWithFolderSelectorAndHelp(string target, string label, string help = null) + { + if (!formInputData.ContainsKey(target)) + { + formInputData[target] = ""; + } + + GUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10)); + + var displayLabel = help == null ? label : $"{label}(?)"; + GUILayout.Label(new GUIContent(displayLabel, help), GUILayout.Width(140)); + + formInputData[target] = GUILayout.TextField(formInputData[target], GUILayout.MaxWidth(EditorGUIUtility.currentViewWidth - 275)); + + if (GUILayout.Button("选择", GUILayout.Width(60))) + { + var selectedPath = EditorUtility.OpenFolderPanel("选择导出目录", projectRootPath, ""); + if (!string.IsNullOrEmpty(selectedPath)) + { + if (selectedPath.StartsWith(projectRootPath)) + { + var relativePath = selectedPath.Substring(projectRootPath.Length); + if (relativePath.StartsWith("/") || relativePath.StartsWith("\\")) + { + relativePath = relativePath.Substring(1); + } + formInputData[target] = relativePath; + } + else + { + formInputData[target] = selectedPath; + } + } + } + + GUILayout.EndHorizontal(); + } + + #endregion + } + + /// + /// PC高性能小游戏配置数据 + /// + [System.Serializable] + public class PCHPConfigData + { + public string exportPath; + } +} diff --git a/Editor/PCHighPerformance/WXPCSettingHelper.cs.meta b/Editor/PCHighPerformance/WXPCSettingHelper.cs.meta new file mode 100644 index 000000000..825fdfea3 --- /dev/null +++ b/Editor/PCHighPerformance/WXPCSettingHelper.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 769878c6cc6489f59f3bca6835614c27 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/WXConvertCore.cs b/Editor/WXConvertCore.cs index 08f39476d..5a6d1279a 100644 --- a/Editor/WXConvertCore.cs +++ b/Editor/WXConvertCore.cs @@ -167,8 +167,10 @@ namespace WeChatWASM Debug.LogError("性能分析工具只能用于Development Build, 终止导出!"); return WXExportError.BUILD_WEBGL_FAILED; } - dynamic config = isPlayableBuild ? UnityUtil.GetPlayableEditorConf() : UnityUtil.GetEditorConf(); - if (config.ProjectConf.relativeDST == string.Empty) + string relativeDST = isPlayableBuild + ? UnityUtil.GetPlayableEditorConf().ProjectConf.relativeDST + : UnityUtil.GetEditorConf().ProjectConf.relativeDST; + if (relativeDST == string.Empty) { Debug.LogError("请先配置游戏导出路径"); return WXExportError.BUILD_WEBGL_FAILED; @@ -273,6 +275,24 @@ namespace WeChatWASM finishExport(); } } + + // PC高性能模式:在小游戏构建完成后构建PC版本 + if (buildWebGL && WXPCHPBuildHelper.IsPCHighPerformanceEnabled()) + { + Debug.Log("[微信小游戏] 小游戏构建完成,开始构建PC高性能版本..."); + + if (!WXPCHPBuildHelper.BuildPCHighPerformance(config.ProjectConf.DST)) + { + Debug.LogError("[微信小游戏] PC高性能模式构建失败"); + EditorUtility.DisplayDialog("PC高性能模式构建失败", + "PC高性能版本构建失败,但小游戏版本已构建成功。", "确定"); + } + else + { + Debug.Log("[微信小游戏] PC高性能版本构建完成!"); + } + } + return WXExportError.SUCCEED; } diff --git a/Editor/WXEditorSettingHelper.cs b/Editor/WXEditorSettingHelper.cs index a7f7417b2..e32bbd321 100644 --- a/Editor/WXEditorSettingHelper.cs +++ b/Editor/WXEditorSettingHelper.cs @@ -121,6 +121,14 @@ namespace WeChatWASM EditorGUILayout.EndVertical(); } + foldPCHighPerformance = EditorGUILayout.Foldout(foldPCHighPerformance, "PC高性能模式选项"); + if (foldPCHighPerformance) + { + EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); + OnSettingPCHighPerformance(); + EditorGUILayout.EndVertical(); + } + foldDebugOptions = EditorGUILayout.Foldout(foldDebugOptions, "调试编译选项"); if (foldDebugOptions) { @@ -233,6 +241,14 @@ namespace WeChatWASM EditorGUILayout.EndVertical(); } + foldPCHighPerformance = EditorGUILayout.Foldout(foldPCHighPerformance, "PC高性能模式"); + if (foldPCHighPerformance) + { + EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); + OnSettingPCHighPerformance(); + EditorGUILayout.EndVertical(); + } + foldDebugOptions = EditorGUILayout.Foldout(foldDebugOptions, "调试编译选项"); if (foldDebugOptions) { @@ -261,7 +277,7 @@ namespace WeChatWASM { var ProjectConf = miniGameProperty.FindPropertyRelative("ProjectConf"); string identifier = ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue; - string[] identifiers = identifier.Split(";"); + string[] identifiers = identifier.Split(';'); string idStr = ""; foreach (string id in identifiers) { @@ -374,6 +390,11 @@ namespace WeChatWASM formCheckbox("disableMultiTouch", "禁止多点触控"); } + private void OnSettingPCHighPerformance() + { + formCheckbox("enablePCHighPerformance", "PC高性能模式(?)", "勾选后将在构建时同时构建PC端高性能版本,构建产物会放到导出路径下的PCHP目录"); + } + private void OnSettingDebugOptions(bool showDevBuild) { EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); @@ -519,6 +540,7 @@ namespace WeChatWASM private bool foldBaseInfo = true; private bool foldLoadingConfig = true; private bool foldSDKOptions = true; + private bool foldPCHighPerformance = true; private bool foldDebugOptions = true; private bool foldInstantGame = false; private bool foldFontOptions = false; @@ -657,6 +679,7 @@ namespace WeChatWASM this.setData("loadingBarWidth", ProjectConf.loadingBarWidth.ToString()); this.setData("needCheckUpdate", ProjectConf.needCheckUpdate); this.setData("disableHighPerformanceFallback", ProjectConf.disableHighPerformanceFallback); + this.setData("enablePCHighPerformance", ProjectConf.EnablePCHighPerformance); } private void loadSDKOptionsData(SDKOptions SDKOptions) @@ -784,6 +807,7 @@ namespace WeChatWASM ProjectConf.loadingBarWidth = int.Parse(this.getDataInput("loadingBarWidth")); ProjectConf.needCheckUpdate = this.getDataCheckbox("needCheckUpdate"); ProjectConf.disableHighPerformanceFallback = this.getDataCheckbox("disableHighPerformanceFallback"); + ProjectConf.EnablePCHighPerformance = this.getDataCheckbox("enablePCHighPerformance"); } private void saveSDKOptionsData(SDKOptions SDKOptions) @@ -873,6 +897,7 @@ namespace WeChatWASM _ProjectConf.loadingBarWidth = ProjectConf.FindPropertyRelative("loadingBarWidth").intValue; _ProjectConf.needCheckUpdate = ProjectConf.FindPropertyRelative("needCheckUpdate").boolValue; _ProjectConf.disableHighPerformanceFallback = ProjectConf.FindPropertyRelative("disableHighPerformanceFallback").boolValue; + _ProjectConf.EnablePCHighPerformance = ProjectConf.FindPropertyRelative("EnablePCHighPerformance").boolValue; } private void serializeProjectConf(WXProjectConf _ProjectConf, SerializedProperty ProjectConf) { @@ -902,6 +927,7 @@ namespace WeChatWASM ProjectConf.FindPropertyRelative("loadingBarWidth").intValue = _ProjectConf.loadingBarWidth; ProjectConf.FindPropertyRelative("needCheckUpdate").boolValue = _ProjectConf.needCheckUpdate; ProjectConf.FindPropertyRelative("disableHighPerformanceFallback").boolValue = _ProjectConf.disableHighPerformanceFallback; + ProjectConf.FindPropertyRelative("EnablePCHighPerformance").boolValue = _ProjectConf.EnablePCHighPerformance; //miniGameProperty.FindPropertyRelative("m_AutomaticFillInstantGame").boolValue = getDataCheckbox("m_AutomaticFillInstantGame"); diff --git a/Editor/WXPluginVersion.cs b/Editor/WXPluginVersion.cs index 1daae2571..7ff47d36e 100644 --- a/Editor/WXPluginVersion.cs +++ b/Editor/WXPluginVersion.cs @@ -2,7 +2,7 @@ namespace WeChatWASM { public class WXPluginVersion { - public static string pluginVersion = "202603160259"; // 这一行不要改他,导出的时候会自动替换 + public static string pluginVersion = "202603250922"; // 这一行不要改他,导出的时候会自动替换 } public class WXPluginConf diff --git a/Editor/wx-editor.dll b/Editor/wx-editor.dll index 4443e0e0d886bd50d8a7e064c9879e97cdf53277..79e933642a86ef5ddff31082af1a4008736888ac 100644 GIT binary patch delta 54762 zcmbTf2Y6J~+BUrQv}DpJlT3OtnG_~H0TNOOy-N$dS3y7^U{KL8nNS23sT&hSYzR`6 zW~2#H6lo$wEPymc5v4ap^n~vzYbKNPzW?`K*U!1mde*(}r>yeqwb$&~87pT6R?Z4s z__8*6?H7yY#wcAEt?e5i&S=FG0{&gniZz-=@gb^B8KU%3rz_5gY~b);2l&56=!N%r zjd=Kv5K48+o!TZf-8DnQ4XKLIl^bieM1C2q*wvWkoofy@3Dhh0njf0B)qsd;zFe`U zq0(I;bar1Md@Qw!*<>=M2MVupW@^r~=%*CfQR@fL^7X1nLFEdaFxUgZ!p|TTJzV%3 z(*uO7y=Hu?nF>U^-MT^x-6(CJ3gxo)8=$FUhmVcQ(3*cs0yRpu>enkv$*yVIYnwkP z+#il=aU=4e>@yMfD zHbxTC)EauR#JtA6sb3~*PSG-sr`{FO;I3KHwUwE-`FW~<3sKgeA* z^VJAnRAYyC)gG^Q4I*4O8~4;ruVzNpADqW9@2L-8ZD6WTTO7C5?78`&|K;gEjwxpG z+$fFXe$BGELn4$L>fbA`I4zFrz-a7N7?emotFbt4AhtMeQgbg@BgZXnxy=H@0gnz{ zW*Y!M;O0MB{KeuSi@#CG5aw)+Scl0E|1=h-;}NSs_M_K-QG_}E!=jcOAF~iJSHLMK zEDj9|Eef7N9k=LFggFe1yjXa%Fru&qH4wt#LoH1lzRdWs@JA8m2w)V5LiSq-?D-<@ zxKP7ZPql?P;!%O4+dOo;YRVK$l5}<5>gc3QWJ;e@=mPaIq?<$qHEBynL7Nb1fzY5{ zTOFljs$Of-<5~YH;C$1BSE>+E*;>&T0+&K23DoVi<|!ph-L)n%EQ@?kboE4LKGH95ejzJ6svZ1&e}mC&7qo_EHrjl4ueSTAvER9YyMjMv|?%jjJI6_ z!?#a?J~~>cWgoUzTBtiejQ2yU@^ti4-a@_lVSJ)z12mTgVYX`Qu$%@VgSJpJK1wjV z71Ki@61h=Few1L4)z?0H$yE(opXjQ#Tpt60hpvxOTC3&j?S|H1SJ6^kyMA0sd#K{J zsyFG=`v{Y+yd(N-hecZ`f(>>DbUwKvTWz`_DyWWZ17u|@^{EZ%N-K5AhNVzuY>YLv zg60)T;r0n|S*=KlsA#1Q+GsVkgjSllO5`n-t<`xO_rh-4byKKf?T#cCuoj2fK+&O1 z8C-%srEmfIh>Gs&%+1Xjbp~Eze+lQY3sq-hwJTNUV6_`mQ(Fm5h=Wu^99`7=n+vi! zp+@-=P}-;BZu|xK3^UkYK@;TcFGEe(&(L(2cTxv^Y)wN4rLSUpTDqnj!xtiBdp8-}vIq%};nZEN0sczqtO7?&4hTwX@h*Mh6bE>gQ{ z%VCGn>8LC{4GN=D3t>*N(S8Q?)!v^b+GDllusP{c=gVtcXta*e(4f&duwA1qJ&WN+ z)$IS&R}brUV$VpWL~XpcreG7$+R|7J+``MEAZ(JZQ>g`zNHUaf2Cg)mfdf}DNnaX< z(AQADrN+81%S$n+-49hOM)m5UC%k<$LYJnm@KuWrFI66^*?)!ATsyo|Q5LJKzbb(8 zr?0wqt41%l(p6BYHB84jT>vhVDv>E&NWm(W*4LVWT8l^v8OLI%u1E?io3Bx`x8<~a zqrUdcI-kh6d@if6HLK3&GWG6JThyENdAJY_Wh%vdQ_cE1Qc=}TUuP(9(K;{xI$n8Q z-Tk%AdoftSIxnVm_CGd4S)xul_6(GlkEI4L0kZ6M@ZoqJYOv1Ls`Xq*?wim;%UlUD zDsduknco7bqtauUu~9B_+vAB&Smx!Z{)~H>bq;KBtuLyl_HdJS3j}byjg5E*(ume@ zD|id8S$0%e6d_H_4_ zt3i#fxeuUHYk+((lpO-Sq)KE;52Hy^#hUtBu=s|uBc!!PeRR5c%eD1+NFbLNWL#cg zhxd#HJ#=|lr@nZ`*89Wy{0iicQWRwD;dqwthr;nSG-|YE$3QsV2deBi)O>`t^aM!X zv;>*305t6v4GUTUY)vEJYsugn#2WzJDns{MY%^3so)zAMoi z`CX+(oJ(ndvw|1kdXPFQJuX0Olow#TbF|NXgzBFA>;`CneHPnY*Wr3~%el+SCiRW; zF$teQd+8)dGQTu?u*Nv7p-SRE!ne&w;*kCBV3}Z@=TUw}wc z!u-4oUWdgNT8sTxXsP%NNLt%nP^mS56GPb*Ad)ISQ`cRHZHrsDNvCyuOw!AN&P+O^ z1AFC)f-&iIWS0Fhm~^FAp%K=>giWgd#aI|k`bE34TkUfg3;u~ zA&lN8L+K5$rAQpXt9-W_btx9~3opgCh5NeB;+~&RxtU|xXu11|MWq^2<%Pp z;8hOyeHdJLvX@t_0R~_wy9Lcj=0L|D^{q>ZaX4dOiuW#40F4MP0pGBGu$%Z|%uAQ1 z7s2^JXRpR{(N0h^!{x#d)qGo2B0qgDM_hOKmV!7 zOp$zeIdJ9-<@?m2pTm`XYRbX}tpaDxG{pkDXIF5I^G{n1 z?5_<0<2uOJpTUfl7j_|EVF+`ey+|_(gN3V94|ml|cmS?|mRj|h%W)Q51=x6K5eyNe z3wrA6%R{MquA_gRG^Y7>e~3V1c?8FP%1=I&BD7aI;53Jy53pk{Pnl&KVMQu2?NVd4 zb{z~N6};o>YH4v1;e-Z8K=^S6E@BR{{e6H^LrG3g5&{PWT1|LoN zeyE4kYGLX!g<<|!ZkRu|Q2-ns_p9l@#x+0<4N&vo!qPb4P^Pn(b!k>uT&$a5Ds;;< z;*ZyitB8w1GO@)tvdNB;Hq8i#Wt#C<#8?EDjdi&Rr6Axf?`&npA_t%so zqQeuMZ1AapPns~K!ZGwB+KOi&k|Euz;wUIWzrRNPDcCj?f`_<1ZlRgQ{w%b^X{4)6 zfFtU~t6@zj!dlnIiAwZiU+0GCFBJx7&en-YkXjt1R#SdN&G>zU^BA!7sk4>ixU9b0 z(s2T-`~eiF8jiY{0jE&t9p8e$Rnduk;BG6=*>}(g(*<|UjnD{l1;<@^LV*pm%mn>* zU=uLkGXob;j&N!;<>)V1S9$}|2{*PfxX<}GP)TEgT@QnnK}s7O-#|^8mj#1AUyWC( z5$E+J>T*OcO*yKS-9`gAfP(`raR{Y%p%pw}ODUXa;1jJj%<-MN@Q;`v8gV&#>SySu zDL{&Q8gCCNa zMB?CNb1>N0A>F|QTl>RMLEvMD76ba*bI4M5-dGxdkVoQO`me|2-GjOru3R_{%7M~! zsynU+ht_o&a@RHc>ZR*p%31Z{^%&)XYPk_xd>*1&eAAi9CbBzUo^r-;4Z4EccPU`YWq8_ zlymB!PbrQ@6uG8-;1*0e58kX(Y%zxZUkGF-2@#=17(~B$2oP{ zy}T&65crG(sSjtIBv{)rE2t$^K2X2DH`R0*nsHLiCUbfeJU73rPP!kePYV|ncWWly zAE)@@OxPRXh<{XneP9iP{MMCDgiI_~ps;Vkyw_G3)aXBl`B0x?;3?4+b@rc$kO3e5 zIg38bmN@?gH!yWAz{XIHptK)UeGM8$yv9F6yW=4g+Gm@=hc0+JkARY};5FRGxS`?> zwA#anAz?T zXqj~0j(vfGW?nc<^T|VJFC^c_V<3K2D4RP+)TXm{dcjN84#&~xl zu957h4IBNTsDvF~2ajmrBdDSBUQN$`x+%(i_5FV*C=XTBe?pTnFP7=1IAFp`y+EfF zPDGH-)LaTrNDOf5Dks(S|EKDx)D;@JPUt%jmvmVv+?x&X1fcw1b@P83I{yQ0_P5=) z=30dB0IYnBwRf>5aOZjtYmn|b`wFaSu=YOIXkS~2HP|$D_ElKZW9&_1NRLJA(;0q8F$4k7c5#lf;j=HfntX)|? zUY>zK!Z|aD1tbe1xG|$JqX=`rT>(WX3w%fb2tWISO1P>#e!?3c5der(dp&-q9XNP{oU^661y=E&n$G={nBzQv#piTmTLO~dMLI&jmdzCy=3H^{i$G_J4Jsm@K~ z>f`7px4yy?b#9Pxxyh@q)w#}1UUfG;xM@;fp-Y_`WL$3Y>uYtbbCX|vT(7ifSx{f0 zTb&zZTy6^MYjv-4Q&`>I0B(xvE0ol^LB{2#X??98b#9tgp9DAUA^Sa7s%M=WWL$0_ z`#rUK)ww~&(OQeo_p8TyDc(_V9eAqtM%6ZS-88RW;H5+=fz|80lsO<8dMi1a{u*`o z*|_Ri-pc4|y-^8OPF6=5mB{F$Z~<$|ahrk*5f1Dfzy_3ou-0(aogc|$l>TW(tgwuY8RB#vc zP@zq+oF1bZO>_dbpCvtfda5bMZIZP+Vt=s_`h!MhACnI}q|n%ZBz3q)gF0?#b&pbM zGj&<(z&x`0gpblfiLN&JD&bDrUdwT>b?Lx42cGq6%8{W*BlNJxC}8vM1mT6oZ?o^OG(3qA_&B`oGZ`vvM2+@_&hNPENxGzDtP{6hW}paq z%X}dSZvPYnU%kK}!S=5x2;C5f_6QPe3f7dzRr~oVQIDZP|{>Jop&W`hr2I?K2U*wj5!z7M8+XG-}N)vx=*+b#ap_x+X6KztmaWck90 zM_1Mk^CO`8dVmsXp!=tH^_>7E)Qod4*H0tw-_?x+m3Sv?`8tEn0b91tpm)HQt1|@X z934pN9kA)aS;0__TJ+9K20WK1up8!_9$~--3JAUtJiaMAEz(%Bi#E*qLF5atsCny@BXh z{aldJ2$o@8kdo=`2aT}Ee$|(P6kBXEAbj-PAEb^-k4Mk_tKr+3tmf1D5s9U}FRa8U zFwm9v1z6e!PBi>*8rr78_6<(3w2y#KG^97JYxP!>QqXD|EHscJ@~2% zwr(AL**T>8`(P!}iIYsvsY8X9I;x?xi74$4?s2cc`KJ#us4x(KhSG->@H)qpp{*Ac z;BE#Am@BM+S1zs@eMXKHS{jcXyQHDSNnka+Mll7ANG1p>#FYyH>}AC=p7x>Vgm@HU+;q5@~QtFqE!9mas-M z4P~tbzT8o0xg7(mE5XW%O8`y>LGK)JKgIe7Xok}b^}*NRMpwELb>KdS z^;KBM6wv7GLs4f4)-~lQ>|L<|lT0=^F#o{lEIvu=uW=F>21;gl&{k{N>F(bk(zCPkmI-KSy%S{hauQu|QVvMedXC)r|& zGupx0kUD@`!=TkSIjk_w7-!~o)($7_@VMw$PwfcOj)+T)^LHy(pA1z(`(v;uvWbez z4|9{y8cnUyaRm{ctufRZ6W27-vo)4lW8+#_xOGIui0bARB|HM%$N2#3n;hp8*CVEm zo&tjkhiZIxgRB zT73(=!|Vn`P{>peJWWY#kYs%{0u1E(%Mm6smuw9g30zlqpy~?tvMhpp?f?`+9ZzM0 zRO`bh!C-2g!5ud6k0gWiNa{ofKs?|qw#%}{J_U9q?q1`FvVnsEXIo2wv%)tH^#`28 zra9JxFo&kxc^oUx`W0~2z5gAn37a;t&V3q8 zo48G@OQUF9^P^~7>lhsd)Rd;BDZ6cIT{Z#SUj1*k#q74&I%6WZ&1JWkAJ%B{*OW!S zXeE}{tR)+?v_6Cv?&1>N1~`OP%(b#c!KBivl|M)vX*c!50l0}v-?J1~IcY-jBW zU*6Vbcy)XX1utgN9|W&)Cl1ibx)}65uir(i39qU}L4d<|@RIEdF*Ij9`Ni*2ZOE5L#!DW2FdPSd0b1gC5NW zqpj1?Aga#bJ=Xk;#TmE3I5rq(J&Oh&+m9)pB4n`W2!bO_WP^#;CR4z`W6;xC^DP!T z+y>9E!86vyXdrI_n3s20)89scQb2Ho=h)ym>rZGP?_g*!oHZRR-T=Y5_aYcT?!9PD zdA45eonXc5AUNY4?Ac-M2Z|n^G2<(ktFS(eoX6UJiqO)FTu3nBrpO6yFx z4#6}ynQGP(Xf5xGv!Tzwu)ZOYtnDm1B`S&FtCZ0q7BwusWAPV@h$ONrVlkM7lf`>U za1HEZoW7?3<(;DDY4Mdu!u_|yOu0QvUrKbY8HoCTw~#%P6k;lN#qMEQ}4wAdN+rhDsuj@{W6yShFsJbD?X) zq_trEtt?Knc*G*Q5xH!}Vi*W^39s|ZD*y| zip4<|zq9ZyAcKqo*QzDDqhiha_!EfQu5OB_fFgAL4K~}!;yjDTEaD5vWos6r3d!JA zMjtUc$><)V@FFrOEF#UJjHa`ApT(Cfeq&*5N(N~xx-=!bXINBo;|@j_2vrr6zO9%P z+cO%=Xg;G&Ab8r_x+ef@)*JBcP@G@gwBKiaOEYqr&td?JY0W6WdyKwd@hc0j=46n< z;t3WLSS(<%nZ+p<4_Jh?AiIJVRf)y`hT(rZ$&N(Sqx%P!Qx#I>~fsjCDyFh;S035 zpgNbous;0x1K!B&EIP3m&tg7{O(59iGj5kyv-bN6Tw3c~-e-MF8*-W7MzMnD{*205 zyv1SqP#i?9x4SHNN*3kQpLSnOkQnT5V1`AqFdcAXhbW~4IO&f+{bK4z5I zi459xBJ-yi&112V#YqhJ?7Jl8xAd^LR z5S(-Hj-0$Qux71+KOJ+O=;@Be`de9??nZI`!zivhp*G#g^JqqM8LbDz0pN`&831e6 zNs1!kGB~O6{&t_uB1*_fQ3<&m#%Knk)r<}^y2&W02WjT^AiKUjXjY~&TE=1*iwh*G zdb&moFR925Va-}&fDXw|7&D+lZF-WcQJ@c(*BlmWS$xIf28+O6)P=^q$e?#GGI*ZF z8{GIQqjM~3Sy+3MW~<(0{#0)=f0@yG=8m(t!@}H$402iYW${8EvRlSz7mEuds`@JO z=%~QgU~s>Mqa)U=i~STKKd#~8wgx>I<0uw$Sgh?!evh!Y#*O~{NHdE?Nk7HPi|fn& z;d2Srtl#*u2!b&GqaLJNpak8wQatJBv;%#Jnxpn;l?rm934V$yXYSE~CliL>3FUaWfzeFx4FZYt{o8 zz+>L;vsvg<IY~8inv*^m_3H#tYL9v z3?+V<8F`w;BW{c;qsC$uL(9m2C5!jC@e3BevhbQh1}Q9_U@?Kk0v4NDoMQ1{3i-4= zOLqCs66(+5MQ&Wq=rcwaSt!rBuC(j!WyYFyV*)I*$IYe9bL4q6=;J+r(OMQ?vADq^ z@Oe_ne%_Tp58R%yW*rHiw_VS;Y5rLMbxE z7b)6LAo$9Gm!;)h32Rnc0~mOxy6rcyoLshJF^0vfEIwj!jKysb+}8+qU$JHlwYyUh zH;G2m$Ybwm)RE^{RI}L5;tY#NETSBw+0;RHLs(RT-~lAL2Y@x}B#7pD|Jcv^SJ;VH z1^Kd9kgrZG#&hF5MjKhc-=oSI%5n$5n)L(*NUfWp5GVP{bCT!2j9y^zCX3IQyFjR_ zk`&`B$*eVtQ7q=LSj*xo*1XOrU^*FOgW!R~o11dwux7QVLcfyg`Zb01t5|GjahAou zEMjLUc%d|(L7s=Rn8{)li-RnFXW=`O4ANP2VKI@#0v4NCoCMLD9s>8)x-u7Q*5}g{ zA-@2H3k$y@=;KzvniYQlMt(zv>C$)>b*>MKsVtVwqJHdTbe_dy7V$5+@(|ugkk<^> ztoOjNyk_u{e)1*q@e+#3w-?-5@j||dSbeTsg6B#XJ@$oz*HijpJopY+NjfnM($78;-W;jKw@55LX;Jh#iJ@Y6wP`-QoH=|>gZav~2J-vR>Jv8SKoAQBVo~ z5-YdSwpfGsLd-K7#D%bJu|DFo_beOKV;1WTVq_AQbCa<=9f4)5KrHY3VR=IW(A?2rDWU4hEeQIQFD31Vkd}o6mkKTgQ@Iqe=*Y_HWs$c3>L#jo-3$K_&-9lINlgpOjfu=J0^@}~KNXoGlc`y$>T&Ie)3Ht2*w3{Ak6 zAI(=&e5I|CTIQO*h<6&qu^BSQd+#do)>L{DVs6xC3Dp4Wb*h-^xWD=jJ>dcR!1N5R`#f#y7;Wu@1{saadLdV;OA6 z@^J$!V{QIH0itCS4A#C0wk&FjWo{!Zk3$`Po=b;pnF(7qSuxnUrfVBPJ_X{8PL6%U z9v}*wX{Z#~7!BsqB)=JO7{<2^mct;%!sHvocB*#^!uF@dAMnSe`=hWl(zHLOvU|Xr ziNT^%0*1-7VIIs#>Qw}qu~;5WMn9vJUPS?7r3oVrg+W62hEAN)^J$m?a}#j2-XeEV z!D!HrR;xu6*8j}IzJF}O@)6ayLOnq2fJGUpOb!(yK)e_`B_lw5k&k7J8O!J-EFT0< z$!M zCoG3StT$svD}%9o4KAl(amf5+W|5|A6kZpfgNI z8flVsIQr{0)ci6HyI2Hk42cHm86bYJqMvyXC0J;z3&SA8l1sxZ0yNG899w4%tm_nndEHLYHloIir(9)Em;aD+`G^yWWf>_|u?Na#B zF`UDRWH(tX@vwVQyieR0-Z&Rdv5L?GLbIIW1A?y+oFi7V8~F1}y?8~eA+&|Kd15W0 zuNxw_5bhcn@H(L-;zQP?@YUiY>KZPgUMz(_x5l-9E(q6tnb<*^YmDgSZQ;9%QgyJP`K?9U$~b z+$WTigQ9Jwi0bcDX5$#1Uc3EfG;@GTWT#Rro6%|>`NwNXrj77}WQ$O#j? zI|a%10MY4Ca??qov+1kTA1Ixa5aKQttWM7X6iR4L?CSIkO$of=gLa$pfz$L*qM>uH z1?{6G5VscWJ`e){X+ZOozYyPuAxf&EjdunK&gUWUTNdc1cf#s)y?9b-Na#m_=qY%; zeL8Tr{1KHaEs5&}TxX?RX{`VhRzOD0Y^5Wi9ErLR3X-UVPz#BAqZg-mKN+3QR{E3E zBS7YWn}INjAXqER;Cae;LV7~;l~U4t1~gl07ATWJDG0P`l?=@yWeRc8g{#w7h{ekD z?(q&$s+0;CuWPtfijy>*GibcamDvQ1Fi~(>D039tAiJ3my{F70t_^VO#0q7J+v(fN z2g;isPCrnVljeOJ+I^(FPv|FaL>rZrWH-o$L)xsYhm3-Ipwo<*zfIXdZaDLIA%gIH zsqI!a6XHv4uTn$f&C}p6|GBaSO5UvX;(+ogB%h!KHEIqk`$==45j77hhm=(?f4CIH_Bm9q&1w9KAC6Ebk3qMV^#&tQ>D#@Bc3c*)XvZjc<@Pf9~^d-9- z$hD@LC*beQa4#vw%yWt^nn4;&bh96>(@@P|jaiOt74@xtXSBv$8kZY!lDBdDQ zY97O4!_OXqvCW8Oo(9W-Mho1we@l&k^T1e*73z~3VEbv%F~LBrP&fM}X$*!&-s?2Z zK9wi))@%AyMg(E`Nh2)3p)xfW>rJWbAB^=0R5pRqBrMt+T7%f7e?|wNhZ3IGSwwk~ z8G*9(*i7o;R)?F1v1jORE9PRf$e3nDvB7Q^YYlmb0neGA9YzZ&E!9=0g$jUTDxYKNHgH z1T2a{OoYxEgb#GZAl{>TanvPWgSZU2kSCsuzUyld@vt-|G1v<|yqb?)oJW3g3(?z2 zuRoo>inv&affa87Un6H1XM$3WHzrGiSPU=qFhX^vI``c!T=V7V5` zlFDJl5T03QrH^4vV4unviC7j>-JFE=NmNfw!TM>c-_60guNRj2`D+4Q0or?g3@uOR zWBDT0S3}((c6)7uazf!wC~taU*HenHjD_poAi5M|>D;fNXy&~)Fb{s==gUBtcHVffF1CUHr@q=&ONINdK@`MagD^)ZeRdaO z%M5>1$|F?=IT}IfGa(JlOw{tL3G0KSu-uw(8$67MEHH>cp;&TOogi<&2Vl!+*oNUb z2$laK&2RkR^PfS4#v@%w?nclK)in=W28Uz06D}izXb($b5U&(r*^vSaf=`VGkweM* zb1c?}XJdJdbT*OIuXGi3qOtx%9gQWOWAJ0y;2BED{~pozpzjBWNQy>cHSLM-(pK7n z0t_XCt>maJb$2+GbEtiN23j4aGKI<)nqtcWs)v$i3)LG^r*~1kIhIb5KqGEP6Z?4< zn#K9UM9GWiQsZlo6DdJh7E`@1lyKv*{0Zf}%zv=!nZgX4w@D9Wqnrrvkdx(OHi>Xe zAe2pwVP=b%X2r?(%%sDVD^5-sP72NgUQ3?#|2fq>rMuwgDlqU2C?CT149i!9TlEK! zVivIsN|WfW!NGh^Nw=NCf0)oL#2_*#w-RY-j80=~X!_I#)9t%VyqlF2IH4uFa2Awn z3toY;O~L#SlX%vsLfvQ#3N5KTqPZPhQW@ZbN$1Fm3suB_G>M_EIqRc~wDhUG8;RvB zP*+5TUmTQ0+C(S|Em%GW^*oUj<@^MmM0}y!0p-!CFQBZY`r#O?H`RX~W)Pbx^Uu&l zxGv!yykUFEf;)MQ_BOn4(JlN4gwNMu{p(2F$e-3l!F+rhhu!@$38($dB%BFT6CB>| zd=YLCX})+vH>K#E0N#SzCp4LTp#CTq>xKS!hB@pP7@j90lg;o>fLD|yyreQT4#!=o zza1Pe_S-Pz9zBNqF(Dnk*1xOw36B@!5_2Qs;m2)@p2G}gfm_Yk4A%7JsKp&wgaURw1Lbu+>C-JoH@8OO=GHH(z4=i!dL3==>x+R zaoJV~PmaIUH-|Dd5lb&a^O!tw&yWunqcy)6%4DzhQ1+zy2&ym0FM;Pmbu+3sg)>ow z)h#qQV{=4Mk~!QYCO~E?qCv`!afT0W<<$j%hmHv?;!7%X^Kl`DHJS}9FD2hUoh!qS+2HmH$3=tirn0m7l+Be& zJ9MXPeJU$7SWeVpc}6*9%M(|W(>9Cf?|mL@V>M{o%6J9peKfbAEI0mTQ$!mtkq|G& zBeB!#RDw<%g-az*w9_Ys=85n)EN4O; zR`5yT53ln8$=6>6Uu4YSx{cF zj7l_!9oko*K0bUtl+EbOb1HH`LY|ncdnGwf_(x&6lIkm>oKU}_!}6(UEEDxurp979 zhU&R-vk)lyGf=M9$272r-)%N1&+4!C$_*5El>1>F6N0_RG&?C8=NBZ#9rM{&_5hCG}M_V{vmK6 z23-`;tjq+80xO9o1Js9VRd( z25u!k8f;L$-zXi*057Z;dy2c1o7Tz+`Sm<2NkTh z^v1eDgY{G+)|*j%B-P8Qeu?VWs2=5qIecuZgGktjz?94qp5U$Z9s>S_j2eurZa9PoftA{3G$la zEb?{lc_#iU6!njU;s+1D?sw$;1U^3{KVeoA(h;;dYy+i6%D(EIXEia-#ddt0TWQ6o z1yy2Pqu&7in}BF`_-pou@X+ANL_*@jyj1umqD2y->F{|J(Q-nI0961wDmj}GxsYVk ztP=h7Z55*!2H$1Db7|0=tN4oi6hz>~2~SykMH_-hz7J@Y8+{MxAw3vJ?pMW6Y!C+MWr^M*^fe(IpcCDE?}k4Ey3Ys# zHU&d#COVxBs4JlEZiIIIvY4|O%N6)qAe+P6j1|CTQ2pv#P!W`D2h@e!b z2mGXwC;3f1l$z_wHLZvG2YYf8>Y*lt>c)$j!>BV=qKoZ{7QPnQC81Yto-RfR5A=M0F#G27A)C|xx_~UWc!Y;?h`nEQk}_9(tM~ z!pAZ44$p+Id_pF&VV+gz+(jQbmqfLaH;t@FnjY5i$i0XTl>dL}Q+1l&3-DxoA1!U&*oE zrsq+UQ}4eucM*pX_JbGisqk2kLm=!05K*4S6Ad&XS|GWx#O;@e10IuzJ6gYMztq#L z&t<;=;hYeV-P9+iBKiNp?ft)SOJ8)^J^ml_bk5Bgj5&gl6DJs9{qXndsk+errs-Gi z3iv-4rrgb8gpUZ#76k#g*jourcf#lqo|ELTG(=Y&=(I}sMTBYKung~e;LQSWD>>pQ zr7Yfnj)Bwdl`ig>v7tCRgHf##P=enL3jm%MYuzi!R5zPVzNigqqd&n3(i?-GaEbsaPVm;CRV zaR18{(L{10=8Akmd{O3#ml@Hj<%%T|-KTCJT#8QlERZXHkqDP5SDbi*Ii8v8%MewG zSXj_p5%MN;uuM*v(kX6;)4f=tf#hb5L^dO?+AnT|%M`O5-SFu1L^>g!r#w;lHiy8A zGEZzLghM*(n#AU*n{Gmj_;cb;Xxc|LN zy@7Qa>7OqW-{XE`2Iq@mgsQ|T*q#f-E{T2&$b>J`+pIv%*qwKbt3dojh-a;!{{62&+$NGUp#ZH!rC4OGRpJ6XQF1+$6Hw@(*(#vOjcmsD z0ZrYgR_R<1l^}A;5H@3PfNefRZM=1S2D8}XeUBHCZ}}w|8K*1;&5h82euO~WHTc2%%FB6(XEL- zyGvv zXs<+j>?f7>!fy*|R*60K)SwQcvqY1XlAw-aKcMQpS2Q~3;Rfg7b%`gpvaVn5c<;_4 ze>Srs+E=}0A=rDG&=PyK({42>bu|6Q#9Vq-0iFzroQ46LW|(O zeNq`9&PlF&Mq5Ci>}AcXkqd(diTnE)ok;yEXqd-Zz$Q3SeEvC-d|iz6Adx#k9In%u z;F01!A->c{3jAYe*BNG{NZjvW~vc>>^kt>{`2dr1)2&cx?ro^g0|s z!zwW|KNH@C*(K53_UDdZ(8FIoyM{zZJ9t?IyM0IRLI;$i{{4NN z<53UD1Ij`Fr_B@G=rjN4%#%bCx#96n7Q^eIMfK2fLcGyU78jTkGrd#AWN}?0+@V~E zZyl4J;!h&^7C%||9l{>K-4V90$zlNf8MAAGCyPmhs>C3_>w%NSQi*;yA)0j*HLJv{ zF_~cJd96(rFMN$0FE7{;a&^>so1iP8=YBa^)F0u{8uAIx=~8#WHId|s_qx9V)y!&iPMCt#MR)*p;N^2 zZn*@Z(*j10jJ%Y;OVewVj`*HrS>x*heWW?0$Suo$i3^c%D%+(tJn=XY@pPg;;q3I44c;eSotrqAE{R1y*_NN5p(L zI_Q5VVxb#-=3g7J#AW9s!`I#9QGb18wHqDu_m6zTjXv{_ihRpuNOo_#xugEJ$amf7 zpnrNKotUWG*wK~Z<)4tQ5wnUje zrP07$WzAY;K-6aU=;wln5{88qxVW+u;UPBQkFgg06+cIzJK32=axu zz211Yi%!Jhcn8I97em}=G@uC**^J0dcO&E$x-};OT1p7B>v=$12u-J%`P37bYqGOEJ`qvH(q#$Yw-th8rQb$gNob=#58CSHQLa_Yyf(I2ii`om&8aX9*}n*ZjexVcZjr|0E+ zSj=#98-ZI02;$?4ni39+O+@13?s!0l2<;cwLsLQZq2%y!_hGSIi(Q)z$8O}#5kfCz zVAnxMgMe#$F>o(RWHVL*H-ivf_p<@bMdTE-z4J8l0IF_s383ZDa3Fkkg7A#sT{jFk z2;Paq2|i7oc}=3r!~x;HjU7fncYve*+rg&`9rWMhM$QAuXa0u))}N^DaW*54zRvFFddS0z^M7@-pTb{J*v&bKF!fv=<+H$Hah13O zuxRMi8-9=kk7eAo#%_dNJ4=W!-^1|Q7iumFr!RpH!*3z*lyV}rV2nO-9I4ah_i*DFae0p_MZ1QJ>b9hu-l?bjT zC&2#jJ0+-!m(x)(o)8}}j*6Eh!UM)pu^fJQ1V0hrIsa>Ml@QL_!lYwjKYUxxd;ad& zW8xP=`$Z7^cUq2#P54SFM8IV_CT_#;UZ58|890v#0p9~7#ACzpdS{>GqBC*06g?u3 zi%AmID$@Y-mvcaO^$>6xyFOkjI3Ah_>ZU`U&Z&vWEjY~f66p0MM z@C6{7x=HK|{&Ovi3*n(uMK{FZ$JVzz5S|fT94^cqy$hk;dJj#uqx~P(7Y~Up)&FU@ zt)AhR9*FHccMq5+8U*hi#|6Ha;@ZfM*V|`~i-AreaVN(R<0Y~g5%C3t-%23b<<`W} zUvg_A(!u*K{QU(YyF>$xh&oF&R)gp@iB1!@AkxW(mo+#w?-1$gcl|MaC=F|sf(FOM z=Wg^DtoH8`;fe9TM`(h#Y52s5TxW^gnmGTwDI6CsyHznw>WAN4k2^ug)zRhfTN8C& zI>1{rnCm~s?SqbvNkW8a`3O*WvI`wE9v5u@L3||j_Typ}k^GtVxX4apH+a}OE1>FM+zGoE32h>1f>- zP^LsSBXX_W2)Po8@-)beawFtkkZ2&;&2uB<-jir7*=->NUjmKQAbD7lr^)cV8zFZ` zqRV8chd+bmZqAABjnHn9Sf$jaoD)+CRY5+5Y0ioH64{K1R!NknL9|n%flea7k#H=LS0y@4 zT&+Zxi3@3r0juEcesq&6kwuHBg+yK!MExb|McibG4iNXML<_V|RDEB<+;BvDBsxll zKT1>+iQHcjmFN(ebGb7&h|82{7I7UVvPPliD2cWaH(jEGQDIIX-;(feB6mo%KL!oI zm8gjx(QS!>;t=`earkoL8c4LqhFmL&J|%95MBgVM_o75MfODP`Z%8;Q5y>qQSq+H3 zm1q@lwY21ry$+;b9LB5tun!=o|Yh9dg>2j7iSmL8F0Vl0hbq7lSt znsWFo%KTV~-XpG1qRTe4>m$*(#KF(N(mcf`A~#yz73I|OL7d67bJR~ zxJMGLBo2OTmd3P`xP}sqqwMY~(KX`6Nt9fK9i1&v6s7D6Le469#T3cilH5nxeO96( zQvFjR_zzuyW^i*3pGX;;DN#Ogog^Ae+-QlOC2od9XNh~8krUohMW>%iGL*9Wdx^p+ zOYcf#qzn#d!QuN5mnzXA;@U~Hh`13FHKF9Lkmwk3%OrAcq3qr&VNc4^lM>w`?uJCO zi8Hq3@HWcsB#HJC*HWUx#0{3{AL5)69iVOfJ&6jOl%-!t7);syt3(dsyjpRR!9^>NqSJC1WLr;CF)LGKpT!Q)Qj$a*%H1+WDkiJkl_@GnoxFENpy<1 zof7>-+K!eYwcT@t-Oh8HBdOdS0AG+p;wiL*)6 zgR;AgL`9Trqa`{)3H-7|6Ny_Vkq;%Q^QeUH5qVRhVj_b&$Y~?4p+ry8-rY;0cuKbC zBx*og_fm;Q5%;M?4Joi5gG>tAObKS489%Ne(0O2Z^Q<_qRmniHqvO0k0BQEKxXR_fUzV zC`o5YDQG*6jF9)N_3LA?hhgd*dwnU4G>mgAgCHM0Z zeNWsQ68+*Na<_yA%Gpa2Q9;-C5oj)d|IMbl%(?{>O3WGe5$F6y z!ihxQm&ie6M1Kyrj<_O;_7Mlax=lCZNtD1dB)UV~N{P~ourmiFil>ylDp7YzZXf3W zc5{%jJ6)odq}o*?17&cTM5&a)OC@SX+@}(aB<`X_<;20yj8I1}5tks*HR3u9l=r_V z%IsG7L2K^(9+97kUu(YM46lxQa^apF2lq);MGl;|jJ-3ujZN8HDN=>8W@+5N2~ zXA=3RLm!R6SrBS3gS*lbc(nK5{1*&9X5gk8YtNcBx>l7Gde(`HpESn$l01Q_-z*? za<4?c6Zf-3yNJ_`(f5?V<0P6w+-njAQIc+uXtk5b6B4c>@~%X` z6BqI%2OLLxcb-HIDB1c+ltEkfixNFe+;WNXDY=5lmoT-wo=8ngCdIs_R+u$mSZNkfR$4Zt zGG5WL(F~(0jWSFtM<@T!^V?7V=|BJXo%i+g={ftme`~L2@3nttt$hxiwc23(>m~RC z`tA~;V3=*8P;Z#@S)rlO-WMu|)-3cev^MwJDYirFBD4?MP@zR+U>g5s2wsM`TButd zpJ}~N0zCV<(Cu)ynq;Rq0Cy(}6`9A-118%kZic(Fgg${bQs`Z{ zd$v#sOuAm^7iez@t$=n~s0+-k@3S-Pht}CEcnsnoAqz&FDs&iq_X?pxXgh?W;O^r> zk3#!J=s+CbLYn;@z2%3{@`Re=S-X3R*A{<)_=t%2!`)kjy1>Evg0X)xj`p<-yi3QdC6X_}pI4YdA3>!IB% zbThg8w5k+34ee#23($@eVf^!lXRnBu2X{wKw^Ovh-T6W@QL(@ybT7u+VHCTL@Xx_MZeE98RNHVXBHN#7B=4cb|u znO=x`mYre|#CV~MT&}c0=p$$og?7Th%Y=T0woPbA9v^p5C<&Hr5gHA1x0`L}`>V$I zmmxS1MMntv!=(=hWx&B}gbJY536()RCG;q?YeIjA*5N@rVJoygLb3iB|4IeB!KI6Y z!rmDss4(%bKvFN&=5_%Qd zZlUe*?6uFCc>MbkB28C}p(7)K#WYc>L)dHwoR_H-!ZwfsM?K7e7=(?{99e@_I$iBeW zVc?r>@~VG8EEREB9$&>Gp;UPGd7)ys`y-(vaQAtk!6@mw*iI1$lcouEhk=I)4TLsb z$U6n%O2Nk9TfUB3gh1og1#_f$WlAu z3H03_p>cIFHyUb2F8}9BWlnIyq zQRoe5i-pERdqL=WGFSSs&^l-rghrt2_J7RIa06PpP#PJS#=lzyvtYz>p|NoHlS0#= z?GoAu?WEAt(0&mb0Cz_|ZYMkkt&h+T&`O0u*s@;rh+tp1d#lhTxce_cbK&la1uvaQ9}RFQC0E^bySch0p|;)L4xSUZvsS zcpKGvi2a2;(C!sF25p(p-=J+13V;zCgg!;r{k_l#XhCc2OG<#bGlje>Al@!`JdVva zOXv`^wL%x-S$k7R!-$^=&4IhG3wfZ$thE!?L%Uh%UTCF4H@wMQ=_7(qLEI`d3Vruq zgbbMN8=-D+uydWAA{$y4p>fcPgvy~!6M7ojN}=ku82@$(7Q)?)LSNy)D?&d)3tw+1 z41;BJg$m&AyM(U5-3x>kpyV?`=`iA6q2W%9f9C`zKr}blDISM|6NSz~8z|&L-(4mY z0<$d_+KH}vyU=aW4h!7{1Gfq-CymCx(5LK#S0H+XKE{Egh33KC4+;&15!VZygS+d6 z9)|XrP&7<>P3Sdf(Hrf2J6Q9on*^^w94mATeRqXWcNpln5RcH;gV?wt=`%$PMiH{50Y$tpKS`VSE z=(@)UU4S-M=nT5Mth>wD3{F@JV|5?Ny z5I+{$4eh+pWN5xy?Sw`OSDGfY8QL(RG3dJQ7jnReRYF-X@J^e&swc!o5hpXdtWF5mTeaD4urcMFW4!5fxDB09!AkZp$r)D zKA}5d(mx4Jg7%8g^U#h8orCtHP#<*NVSl#sh1s9~as=N(-+hPB?J(jTp+CUE8-<>L z_KwhXXlI2ELQ^l=DHg)qaYDDjhy_AlMPmG$D7XmXGNF!eX^qeu&<+Ugg4QDR3$%7M zcEYwWaE4G0j5tE*TXfwsh349y|JDkgfVgw!34H_yUl(eD7PHMxcyj_9@n)fp zFyc6&_0Sdzjez!o(DfvYe;)}hf%uKk7wEfvU$Rqt2Q5t~Dw`7y6Y2!BO&1yplU50p zKzmK-VQ7sY`!`XiX&xx0)$$~o)>plj6cl8t8>vA-mKq%L`~CbYz;8(XZU6l_T>hJN z7rUC_-jgma%F&>eDR}$s-^HW|-akKztI!!rSt=vIpgp|TM6@Ud1!+|r8Wd#E4DNgq z#YmPJ5ftQ5$NX8HAN8ARm;ArwL*xKXe1i_4Wb4*-GdpxF4&@wY+$>C|XsFjyc>B#x z9IvfA-p!0}`$G^5N$dVeM|izG7!FZ1)m_vwmO9pv*KYYTjgR=xs-5SPa4z{euKz?J zpUlcg-gAsjj24Y(XK()&4b_OVyGG4Vi-&mWLJf7XJHv55K9xJuxG{c4V_XUT|M&AA zo_N4eLs8LZXzT_zA9Ytg-!ETka=KV@5#1bv_aF1;J%jUj&k@`@-qtF$GmS-tde3PC zpUR!M?tD5SL;Xr8q-789|LvZ#N()|Ob1XuO7bNm_AC!;9)!X$Xq;MN-gqlEi!k`I; zxusw2%qMzlcN&YddMTcT9k`nRst_BZeFskP`_s}{eAJp4-v6&{6SlKZ^0!m`{ZUT3 zR6_-$J$O6LhW~Wfx}I5Pw3prd-&f10O%r5O{IA+*dBVSv+U=D^En=d)rFK$VIMnd& zLA1V|eVI$?t@c~HA4=x!`@BeCzwQ3VMx_IO-=^MRe)FC0%oW|=?cd}7t~U6@zC}0T zE*FJjbseghdn-F~)xSUY`+j%#-95R~TbX>_)f6p7t4h-QtRLPV|M|Al#n61#${RdW zHRy-vKYzs&V)RvxplQlqh2_muZdDpNm*TbjP*tebWh_)FRAv!PU|E@5NlVOq;6+xS5|6Q3|sJ3w58rsfk{|d#g!go<^Pj;zS-dNQy z?>#yoBW54PE1m-+7v>+KIErGdI`84?a$`97%@XJ|G+P9Lil#I2%b=O)tZ z6i%e{S3ZgM1#D3paJm~*K)y>?k$R5Gr)Cywmzt1#uZ~uqWY5;IUezIwmYPY?q7n1Qr^CzVg5l;aH#rJQZ#Bjsc2THraAk1T1*%jZjL%Vby6Vd1_WD#};s z)O@~9RUP!c=~QopuTpMZ;`g!X*8AHXHdC~>%crJO-$YlRNhMQN5hd`qMk0Y*U-pZ! z`sz{niB=)~P`n%M=SwO=+YHwZ-{ID9eMgrumYc4>{aCA5SNTu0ig1TYbx6ci+U812 z5c&R1qiw!_CGf-?q~!fkMuk3|(3RFXYzXieQz$NQl8s-Js2*JcOpZ*}Zf-Thyp zJ!a2cZTxYSGwrKXUCBx_ab@#SotsL=wB_6JvSYtq(j&KRnYu*DXc{d#xlDDf1Km~~ zk(}Fhzdl5UZPJ4~jrO)ZO6wVyv^}bx=@f39$CaJer+QS-vOgy>ms0#Hd`sK&`q6e@ zw{6w;hJV}ks^;6V0Z|*vI{wgB8`tva2C4Hgt7w%kM_xA{_Ia+)esxDgZ=V#Sx!XKi zL@d`GPObG_!UUgO1Me~;HDQ~Nm(#rCvzX4YhP-{+)n6AHXM->JaGGI8tnqZWOFqMm zjF?}1ij8TmRjSb7^cDJe;u%$mJ6dH-NG@~krB<2dtfY6-5?u)=RZ?rsaIU8POP!n4 zG}k8DW*=1RCo|@eg=@O)ak{;#(4Xe(LIe84{}f$INIsF->I^on<^Sv~)vsh4z8mPQ z-5QYWWxB^+LE^vmn#TW*B=4y2eH!!aYK*tgpFS^dGc#<&)}!FR8*yzl0nb{J_%mr3~EeaN}PsLF0jdt3>JoUKMnPZw>U z_r&_O8s9}FQ|uR=O>wwiA3r{!eB-LIIc|{OQT3^HMrkv~>Z)1|Pjpvx)fgB#+K<({ zDHhOnt1-=IB5l9u;q89W$+Vr~4V*#H6xEgP--*omel^A|35#e?dXL9R?ian1;@apw z6uDBTIVyiWZJ%>*p*YdA#V^?O&8qQpn|rcfr=uEZX2Wva-AZcFRBA1bb0~i3mtsx` zIOvyYh6Nm@{^p9O(QhmJKUHl-V{XO0+=~0R758r|?q4nL-!7GvH(S@@{_RH9`y_$x zb<)3#5}fldH7108L-8d;?pK5W(To}-RqjJss-01A=kg8)HJJ~)LxY`kk?Z}= zn^pcDf}2clq$ee~mC{cOcIyXIW(5c9xilc9pqu1A-%EQ&?HJRgt9vs&rW`&=j@} zbjYV^ZKy$-gSorig3Y#Lrqo}EQF!i`Hjma?!RiX8G z)~tYh&GRo7AQmBxM7(O`k;AVVD)ELZU-R3q0I>*hBw{h$pj5^EAjb=IBfO=wDGODzzT)YzwP5Ztb;`QclT!gSJQY>Q3>FNRD^W z{=LTZ;CJY#n5+X-hUfIzOTEHj#81Mitqak*eYJHW+P8fXZdnQ9cujK_(t`j&t79g1 z&6jPSd2g|7^J+$w*sd`Lbw5f~@Y+mV#g+D}Dbk|~Y`6(FTuol7QJdhK)tVn-3#~pG zLE%N37i+po9Z^r(=D9G7^oQQWP}O7($r#{Mq2Egw8s22CbRX6HPAv>*GM{zdNxy*L z>b6pv$>DBwDvq9C&EbBB!<^;^^jS$g`;XU zuNYN}^tGDTirR&fuGMX$yzS{=UVExm^TJW}R(oU#%SW6Ra9f|N#6VXCiW$h6K(X~wB*!iE_{;}i zjwrVN?DuQLF3peawVGDvqU~_sCA5$%_b5$NTZy|t^Fmq;nwQ^d&^)ndgXYDy8ZtQY#>n=Cq>3sjA+%O4nL%+`zkF zkB7Gp(p$Gt^E{W0n&-FVXTbc(tGKX6&5L$5YF@OfQS+i*jha{UYSc7w|Am} zQNG2Ijg(+SWVzLcwo9$3%=;*IO`J`8HuRcHRr7pRr|GmdP)S}KtQl5np({Qc+6=3< zX#NDzsCiW|F8^)hWt3^gd*nLaBbQO~x<28hUb@EoJjWf?NHesJqR6vqTGT_eI%>@5 z;0L10twEtP-E*vvuFpid&~uerLE(1Em!td*o-os8@Zw`GT6Fg3sAwGPGI&~~%NQw6 zQ=PLl*W5n3ocfh6(f$U%r4x*X0PjI+*qYeF=rqGVYhLQCo~jrVz1K(yyeHa&l%>`i zvD2gT=>Yl=X|ATnwH?Mcu1BM5j7c3=M03^D;O3I3mcR{0LeSVSw>iOY4b`wY?m1dt zx~#)Cp90iVVDS2AbF3TbA4C_>>5lS772$kq%++~EqK{gC?EEDiwxGiqa{f{p7h2GC zBk2+QUR`4FC`bPjHT4JM=~Ut(r%=4$o=MRW>2L6IYo|3Yx5oYaJ|DjB8X5(-gPM=@ zi;=4maW(dMHwkcmw^g>eacZ$mD{#}BjSs%keiua^RJa!_K>t;sdA+*%^Z;I?c9S|e zJjF5FT^Hjt&wJjD$#h)p@*%}>zVq}x9J>!C-Hy|ljkJG8=4UanUUMjYzK=Ecc;>21 zM^rodVBiP}o2we^+kwLx=<5Bg)3|!KBd;SZSm8)*$8o0bA*b6BPtT0a27k`=r)PpI z?VIUSz(B+8XrMQ$+wpbg@Q#g0oau0-{h?!uV=wh0rwx8SXfZHnZ42Z=H7>MwP%ga} zXtsaH$*`9?<~qIzJJGR$syiF%#{L#;XCmcDH0))Z;&qCx4vQW!S{?p)&~V8%w`;U) z!*tjliFT!9y>z~5IN&m_(qr;Hre9uAlX^@($25AFoT)~l*+-(;N21w>J8FUscB220 zj7sKH4U=i?n4LDpQS2Dgy{p=X$C(1EZK<=!wPS5`-^4QO89K#M>mB-pyVqD0 zct)ksU`B0hozEDOxE06NI5IQJ6KhR=OYidHez%&tvmQ@$nuohQlUQo;JcDjCCGbQd zkMw5}-8wLRtW{|JJ^Aaz8nY>VcxSh{!SD0V<&NiF)bl$|#a*QBWv+Sj6NOW8mudS^ z>Z;2f`&}H@y3C|gMqXQIQn_Pr*2D3wroO3tQiTo(?w8bH`@b0;ZYC>vXl@+#|8AV= zKE!-@yMeZ8Xu+NalU;pUw%OIqc1gIpfy!TL-)OLHTa7GFYI3V_M}j9g9~S1%&NnBw zpnQ#)?hP50T%n)sGK*w>B+7@k`>I$nU<15eV=nE!F`2I0@1^9+IP5yb$>D{@skqXV za(oZM--j(q$#m@L^d`lUpm!;z2Gh45j;#E-D#fwgy-GDXE{5+*i8Vtz9ZWgzct!s} z@q_U2pHf;Kjyy-IZo_xiNs&J3wW+M@GssLb?pkTJDj&7lI&S#T|4ws_;wCH3^jCu% zVPXEN$PpRlLsO`7nR^^uX1wDXbwVw)-(UUUNOIG%U~PuR`lv73aGB;dT;`iLTu)2g z-ofS?omic*oNBMmxEAzBcWLHJ!N(1q#d~xX?}^2B?7DeHX1u$pCkstIS*|WkGupi-YuZ69WKH+MRx)_pn5G_`lJKmQG3mM-ti zuMcX!7=E3jU+clI^K>or1-jM6?A4EV;@1lONuHs4)@oXGy*I^s4C`U~iunKe_dI>8 z&3_O2?VnZ-`bz%a{`FRiBUv&5@<$wM2RU_-3yUpyTM||Igl^1FD zRZh80UTfv`WxOhyyW1|eOJ3ig3FY{>H}T5rYS{X2;&lllO!}i>UBd|T5uM#Hw`b2= z`rne9o|)S(H{Fxd)03XtqhG)DzCCk1SvlF+S-H35s6nL*_zPblj8)x7{+R?A}SYO_(up`i!Zibva|r=8X7)Tl#e$(7#7Pdfx&4GSWQ- z**WRCIXRTYlap1D)gwDAYrwjjR+@1={uc!^7AO_-Y1xB;^`S#6h79=AVE;)Ob?aA} ugHi*MPw^k*?0>!2efO3br8Cw!-!{LhYq#6{hiTlFTNk{?yr`=(+WsFK&)-1+ delta 55259 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 diff --git a/Editor/wx-editor.xml b/Editor/wx-editor.xml index 71eca6215..7a39ca753 100644 --- a/Editor/wx-editor.xml +++ b/Editor/wx-editor.xml @@ -493,6 +493,11 @@ 注意:不要随意修改,默认值为0,0表示不限制 + + + 是否开启PC高性能模式 + + 自动将图片尺寸减小一半 diff --git a/Editor/wx-editor.xml.meta b/Editor/wx-editor.xml.meta index a1b05c6cb..fb2659e34 100644 --- a/Editor/wx-editor.xml.meta +++ b/Editor/wx-editor.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7330c57dbe403f6a6825fe311f4436ca +guid: a2fedc6cf4710299bcfd8f0400fd8d43 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/Plugins/wx-perf.dll b/Runtime/Plugins/wx-perf.dll index 5320d0af31869643da3fd2279123fd543b6fd455..e8b590e36b5d31a6eab7b2dfa8e80cf5bd679f56 100644 GIT binary patch delta 38 wcmV+>0NMY5v;%;&1CWRVGpWO|i=o62Wgwgi>43~ZlAmFf-r0NMY5v;%;&1CWRV5^}e(i=o62zgX;}K>m70wYYs`I|HcNvpmJb6knnev;Y7A diff --git a/Runtime/Plugins/wx-runtime-editor.dll b/Runtime/Plugins/wx-runtime-editor.dll index 2c9f8ea647b4877f8cb65309d7c49c753b076445..30c0e51b0213ce298257133d534e7c96fcecbe61 100644 GIT binary patch delta 479 zcmZp8A<*zbU_uA8!OFvp-CMgEA8uk2XPln5nehl?+H~VBj2GEC7%y?KF}&K&y_K<- ziShpSncEq&8Tmgm{AOll*v_E9#K<7P;IUnJCu1omqs{itLyYwj{M#8C_pvhMaCmYG zGcqt(Z5O}I$SlHWuwD8+qpY;HCSyDU8^cEh5ILOzL~1hf3L`{7Y=}tg^kgokV0IX1 zFBg-wJhIxaDiAY}bZi&rX6j|)O=3J7D$J0@_<%{6A!qwWUZ&rTjCtGF_A@P2;!^>- ziIHIv0|NsSg9_vHgiTCMOe&1qpKM|}rNEf7ef?!7Q47X9(~oj9_e%+t1SkzjtkN5#y*#LUUS$XM6Vz`#(~#N5PK*U`<@OxM-I#Kg$Z%*@2i p$Y}cEtIUcP#Hg$Vy2wDP^5&P-2mN~mHCImxl3KrA<{I;pSOE9me6Roj delta 480 zcmZp8A<*zbU_uA8K+*Qb?ycR74>vJ=Vwj${nehmt<8r5PhZyT6_`Mk$_pvhMaCmYG zGcquUZWq7J$SlIhy0@(^kgokV0IX1 zFBg-wJhIxaDiAY}bZi&rX6j|)wPidTD$L-@_<%{6!F~HiUZ&rTjGo)q_A@P2;``6Q zz`)2b2}m+A{AZY+u!*UO=|98vC!3f~DKOe^Uw@fN)PiyQ^rPI&{gT^(su&n{G6KB; z1iOJWh_xFioy)^4&bWPhD-UxS_jCmb<|!(!7LLZo#)cNUZbp_)x+YF;&bm&f2FAM1 zPUa>~u4azL&aUR$H%lS$qLX<(>p=xXe$Yhr0+tZU(9;;d`oY++*N;$mpx q>}EFo@Kt6-3u08(0-f|brtj3X%s2iUWxxE2d-1J(yUaD_C$RwV`G5%k diff --git a/Runtime/Plugins/wx-runtime-editor.xml.meta b/Runtime/Plugins/wx-runtime-editor.xml.meta index 4006ea299..9b9145ffc 100644 --- a/Runtime/Plugins/wx-runtime-editor.xml.meta +++ b/Runtime/Plugins/wx-runtime-editor.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 59f30477a8bb77aeb6d56b69f0799388 +guid: 7ec24f61b92c75ec66978164f3ba5192 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/Plugins/wx-runtime.dll b/Runtime/Plugins/wx-runtime.dll index b5bebdce29223d342daa29fb3f9500e01d2a78f6..8606a9acd7e2c5113b65eca5897451214ec93733 100644 GIT binary patch delta 48 zcmV-00MGw`qz{0k50HohDyhSPi-n5;g^L2Uivu}$5UPtfK-un7La3t1R&+dc>9^E) G11wqlvK3SS delta 48 zcmV-00MGw`qz{0k50Hoh3v#!Ci-n5;g^L2Uivu}$5YMtyhT@K2NW1d;I3#SbxVO}J G11wqlhZVm7 diff --git a/Runtime/Plugins/wx-runtime.xml.meta b/Runtime/Plugins/wx-runtime.xml.meta index 47bcc2740..cb3021b26 100644 --- a/Runtime/Plugins/wx-runtime.xml.meta +++ b/Runtime/Plugins/wx-runtime.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 33778f932d74b9c0309d7573c86c9e5b +guid: 906fcff9425f4275940a868e3866528a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/WXBase.cs b/Runtime/WXBase.cs index 7f7718edd..591aec7e8 100644 --- a/Runtime/WXBase.cs +++ b/Runtime/WXBase.cs @@ -1195,8 +1195,38 @@ namespace WeChatWASM public static WXRankManager GetRankManager() { return WXSDKManagerHandler.Instance.GetRankManager(); } - } -} #endregion +#region PC高性能小游戏 + /// + /// 获取 PC 高性能小游戏管理器 + /// 类似于 VA 方案的 wx.getAndroidHighPerformanceManager() + /// 用于在 PC 原生环境下与微信基础库通信 + /// + /// PC高性能管理器实例,如果不支持则返回 null + /// + /// var pcManager = WX.GetPCHighPerformanceManager(); + /// if (pcManager != null && pcManager.IsSupported) + /// { + /// pcManager.ShowToast(new PCHPShowToastOption + /// { + /// title = "Hello PC!", + /// icon = "success", + /// duration = 2000 + /// }); + /// } + /// + public static WXPCHighPerformanceManager GetPCHighPerformanceManager() + { +#if UNITY_STANDALONE_WIN + return WXPCHighPerformanceManager.GetInstance(); +#else + Debug.LogWarning("[WX] GetPCHighPerformanceManager 仅在 Windows 平台可用"); + return null; +#endif + } +#endregion + } +} + #endif diff --git a/Runtime/WXPCHPInitScript.cs b/Runtime/WXPCHPInitScript.cs new file mode 100644 index 000000000..2dc663aec --- /dev/null +++ b/Runtime/WXPCHPInitScript.cs @@ -0,0 +1,972 @@ +using System; +using System.Collections.Generic; +using System.Collections.Concurrent; +using System.Runtime.InteropServices; +using UnityEngine; +using LitJson; + +namespace WeChatWASM +{ + #region Message Protocol Models + + /// + /// PC高性能方案通信协议 - 请求消息 + /// C# -> DLL -> 内核 -> 基础库 + /// + [Serializable] + public class PCHPRequestMessage + { + /// + /// 消息类型: "request" | "event_register" | "event_unregister" + /// + public string type; + + /// + /// 请求ID,用于匹配回调 + /// + public string requestId; + + /// + /// API名称,如 "showToast", "login" 等 + /// + public string api; + + /// + /// API参数,JSON格式 + /// + public string data; + + /// + /// 时间戳 + /// + public long timestamp; + } + + /// + /// PC高性能方案通信协议 - 响应消息 + /// 基础库 -> 内核 -> DLL -> C# + /// + [Serializable] + public class PCHPResponseMessage + { + /// + /// 消息类型: "response" | "event" + /// + public string type; + + /// + /// 请求ID,与请求消息匹配 + /// + public string requestId; + + /// + /// 回调类型: "success" | "fail" | "complete" + /// + public string callbackType; + + /// + /// API名称(事件类型时使用) + /// + public string api; + + /// + /// 响应数据,JSON格式 + /// + public string data; + + /// + /// 错误信息(失败时) + /// + public string errMsg; + + /// + /// 时间戳 + /// + public long timestamp; + } + + /// + /// 通用回调结果 + /// + [Serializable] + public class PCHPGeneralCallbackResult + { + public string errMsg; + } + + /// + /// ShowToast 参数 + /// + [Serializable] + public class PCHPShowToastOption + { + public string title; + public string icon; + public string image; + public int duration; + public bool mask; + } + + /// + /// ShowModal 参数 + /// + [Serializable] + public class PCHPShowModalOption + { + public string title; + public string content; + public bool showCancel; + public string cancelText; + public string cancelColor; + public string confirmText; + public string confirmColor; + public bool editable; + public string placeholderText; + } + + /// + /// ShowModal 成功回调结果 + /// + [Serializable] + public class PCHPShowModalSuccessCallbackResult + { + public bool confirm; + public bool cancel; + public string content; + public string errMsg; + } + + #endregion + + /// + /// PC高性能小游戏初始化脚本 + /// 负责与宿主程序的 direct_applet_sdk.dll 进行交互 + /// + public class WXPCHPInitScript : MonoBehaviour + { + #region DLL Imports + + private const string DLL_NAME = "direct_applet_sdk.dll"; + + // 初始化SDK + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool InitEmbeddedGameSDK(); + + // 注册异步消息处理器 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern void RegisterAsyncMsgHandler(AsyncMsgHandlerDelegate handler); + + // 建立Mojo连接 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool EstablishConnection(); + + // 初始化游戏窗口 - 传入窗口句柄 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool InitGameWindow(ulong hwnd); + + // 异步发送消息 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool SendMsgAsync(IntPtr data, int len); + + // 清理资源 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool Cleanup(); + + // 获取当前活动窗口句柄 + [DllImport("user32.dll")] + private static extern IntPtr GetActiveWindow(); + + // Windows MessageBox + [DllImport("user32.dll", CharSet = CharSet.Unicode)] + private static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type); + + #endregion + + #region Delegate Definition + + // 异步消息处理器委托 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + private delegate void AsyncMsgHandlerDelegate(IntPtr data, int len); + + // 保持委托引用,防止被GC回收 + private static AsyncMsgHandlerDelegate asyncMsgHandler; + + #endregion + + #region Singleton + + private static WXPCHPInitScript instance; + public static WXPCHPInitScript Instance => instance; + + #endregion + + #region Callback Management + + /// + /// 回调信息封装 + /// + private class CallbackInfo + { + public Action OnSuccess; + public Action OnFail; + public Action OnComplete; + public string ApiName; + public long Timestamp; + } + + // 待处理的回调字典 + private readonly Dictionary _pendingCallbacks = new Dictionary(); + + // 事件监听器字典 >> + private readonly Dictionary>> _eventListeners = new Dictionary>>(); + + // 请求ID计数器 + private int _requestIdCounter = 0; + + // 线程安全的消息队列,用于主线程处理 + private readonly ConcurrentQueue _messageQueue = new ConcurrentQueue(); + + #endregion + + #region Events + + // 收到异步消息时触发的事件(原始字节) + public event Action OnMessageReceived; + + #endregion + + #region Properties + + // SDK是否已初始化 + public bool IsInitialized { get; private set; } + + // 是否已连接 + public bool IsConnected { get; private set; } + + // 窗口句柄 + public IntPtr WindowHandle { get; private set; } + + #endregion + + #region Unity Lifecycle + + private void Awake() + { + Debug.Log("[WXPCHPInitScript] ========== Awake 被调用 =========="); + Debug.Log($"[WXPCHPInitScript] GameObject 名称: {gameObject.name}"); + Debug.Log($"[WXPCHPInitScript] 场景名称: {UnityEngine.SceneManagement.SceneManager.GetActiveScene().name}"); + + if (instance != null && instance != this) + { + Debug.LogWarning("[WXPCHPInitScript] 检测到重复实例,销毁当前对象"); + Destroy(gameObject); + return; + } + + instance = this; + DontDestroyOnLoad(gameObject); + Debug.Log("[WXPCHPInitScript] 单例创建成功,已设置 DontDestroyOnLoad"); + + // 初始化SDK + Initialize(); + } + + private void Update() + { + // 在主线程中处理消息队列 + ProcessMessageQueue(); + } + + private void OnDestroy() + { + if (instance == this) + { + CleanupSDK(); + instance = null; + } + } + + private void OnApplicationQuit() + { + CleanupSDK(); + } + + #endregion + + #region Public Methods - SDK Lifecycle + + /// + /// 初始化SDK并建立连接 + /// + public void Initialize() + { + if (IsInitialized) + { + Debug.LogWarning("[WXPCHPInitScript] SDK已经初始化"); + return; + } + + Debug.Log("[WXPCHPInitScript] ========== 开始初始化 =========="); + Debug.Log($"[WXPCHPInitScript] 当前工作目录: {System.IO.Directory.GetCurrentDirectory()}"); + Debug.Log($"[WXPCHPInitScript] DLL 搜索路径: {DLL_NAME}"); + + ShowStepInfo("SDK 初始化开始", "即将执行 PC 高性能模式 SDK 初始化流程...\n\n共 5 个步骤:\n1. InitEmbeddedGameSDK\n2. RegisterAsyncMsgHandler\n3. EstablishConnection\n4. GetActiveWindow\n5. InitGameWindow"); + + try + { + // 1. 初始化SDK + Debug.Log("[WXPCHPInitScript] Step 1: 调用 InitEmbeddedGameSDK"); + ShowStepInfo("步骤 1/5 - InitEmbeddedGameSDK", "正在初始化嵌入式游戏 SDK..."); + if (!InitEmbeddedGameSDK()) + { + ShowError("InitEmbeddedGameSDK 返回 false"); + return; + } + ShowStepInfo("步骤 1/5 - InitEmbeddedGameSDK ✅", "InitEmbeddedGameSDK 调用成功!"); + + // 2. 注册消息处理器 + Debug.Log("[WXPCHPInitScript] Step 2: 调用 RegisterAsyncMsgHandler"); + ShowStepInfo("步骤 2/5 - RegisterAsyncMsgHandler", "正在注册异步消息处理器..."); + asyncMsgHandler = HandleAsyncMessage; + RegisterAsyncMsgHandler(asyncMsgHandler); + ShowStepInfo("步骤 2/5 - RegisterAsyncMsgHandler ✅", "异步消息处理器注册成功!"); + + // 3. 建立连接 + Debug.Log("[WXPCHPInitScript] Step 3: 调用 EstablishConnection"); + ShowStepInfo("步骤 3/5 - EstablishConnection", "正在建立 Mojo 连接..."); + if (!EstablishConnection()) + { + ShowError("EstablishConnection 返回 false"); + IsConnected = false; + return; + } + IsConnected = true; + ShowStepInfo("步骤 3/5 - EstablishConnection ✅", "Mojo 连接建立成功!"); + + // 4. 获取窗口句柄并初始化游戏窗口 + Debug.Log("[WXPCHPInitScript] Step 4: 获取窗口句柄"); + ShowStepInfo("步骤 4/5 - GetActiveWindow", "正在获取游戏窗口句柄..."); + WindowHandle = GetActiveWindow(); + if (WindowHandle == IntPtr.Zero) + { + ShowError("GetActiveWindow 返回空句柄"); + return; + } + Debug.Log($"获取窗口句柄成功: 0x{WindowHandle.ToInt64():X}"); + ShowStepInfo("步骤 4/5 - GetActiveWindow ✅", $"窗口句柄获取成功: 0x{WindowHandle.ToInt64():X}"); + + // 5. 通知内核获取窗口句柄 + Debug.Log("[WXPCHPInitScript] Step 5: 调用 InitGameWindow"); + ShowStepInfo("步骤 5/5 - InitGameWindow", $"正在初始化游戏窗口...\n窗口句柄: 0x{WindowHandle.ToInt64():X}"); + if (!InitGameWindow((ulong)WindowHandle.ToInt64())) + { + ShowError("InitGameWindow 返回 false"); + return; + } + ShowStepInfo("步骤 5/5 - InitGameWindow ✅", "游戏窗口初始化成功!"); + + IsInitialized = true; + Debug.Log("[WXPCHPInitScript] ========== 初始化完成 =========="); + ShowStepInfo("🎉 SDK 初始化完成", "PC 高性能模式 SDK 所有步骤均已成功完成!\n\n✅ InitEmbeddedGameSDK\n✅ RegisterAsyncMsgHandler\n✅ EstablishConnection\n✅ GetActiveWindow\n✅ InitGameWindow"); + } + catch (DllNotFoundException e) + { + ShowError($"找不到DLL: {e.Message}\n\n请确保 {DLL_NAME} 在以下位置之一:\n- 与 .exe 同级目录\n- System32 目录\n- PATH 环境变量包含的路径"); + Debug.LogError($"[WXPCHPInitScript] DLL 加载失败,请确保 {DLL_NAME} 在以下位置之一:"); + Debug.LogError($" - 与 .exe 同级目录"); + Debug.LogError($" - System32 目录"); + Debug.LogError($" - PATH 环境变量包含的路径"); + } + catch (EntryPointNotFoundException e) + { + ShowError($"找不到函数入口: {e.Message}\n\n可能是 DLL 版本不匹配"); + Debug.LogError($"[WXPCHPInitScript] 函数入口点错误,可能是 DLL 版本不匹配"); + } + catch (Exception e) + { + ShowError($"初始化异常: {e.Message}\n{e.StackTrace}"); + Debug.LogError($"[WXPCHPInitScript] 未知异常: {e}"); + } + } + + #endregion + + #region Public Methods - WX API Calls + + /// + /// 调用微信API(通用方法) + /// + /// API名称,如 "showToast" + /// API参数对象 + /// 成功回调 + /// 失败回调 + /// 完成回调 + /// 请求ID + public string CallWXAPI(string apiName, object data, Action onSuccess = null, Action onFail = null, Action onComplete = null) + { + if (!IsInitialized || !IsConnected) + { + Debug.LogWarning($"[WXPCHPInitScript] SDK未初始化或未连接,无法调用 {apiName}"); + onFail?.Invoke(JsonMapper.ToJson(new PCHPGeneralCallbackResult { errMsg = "SDK not initialized" })); + onComplete?.Invoke(JsonMapper.ToJson(new PCHPGeneralCallbackResult { errMsg = "SDK not initialized" })); + return null; + } + + string requestId = GenerateRequestId(); + string dataJson = data != null ? JsonMapper.ToJson(data) : "{}"; + + // 注册回调 + var callbackInfo = new CallbackInfo + { + OnSuccess = onSuccess, + OnFail = onFail, + OnComplete = onComplete, + ApiName = apiName, + Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + }; + _pendingCallbacks[requestId] = callbackInfo; + + // 构建请求消息 + var request = new PCHPRequestMessage + { + type = "request", + requestId = requestId, + api = apiName, + data = dataJson, + timestamp = callbackInfo.Timestamp + }; + + string requestJson = JsonMapper.ToJson(request); + Debug.Log($"[WXPCHPInitScript] 发送API请求: {apiName}, requestId: {requestId}"); + + if (!SendMessageInternal(requestJson)) + { + _pendingCallbacks.Remove(requestId); + onFail?.Invoke(JsonMapper.ToJson(new PCHPGeneralCallbackResult { errMsg = "Failed to send message" })); + onComplete?.Invoke(JsonMapper.ToJson(new PCHPGeneralCallbackResult { errMsg = "Failed to send message" })); + return null; + } + + return requestId; + } + + /// + /// 显示消息提示框 + /// + public void ShowToast(PCHPShowToastOption option, Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("showToast", option, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + /// + /// 隐藏消息提示框 + /// + public void HideToast(Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("hideToast", null, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + /// + /// 显示模态对话框 + /// + public void ShowModal(PCHPShowModalOption option, Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("showModal", option, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + /// + /// 显示 loading 提示框 + /// + public void ShowLoading(string title, bool mask = false, Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("showLoading", new { title, mask }, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + /// + /// 隐藏 loading 提示框 + /// + public void HideLoading(Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("hideLoading", null, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + #endregion + + #region Public Methods - Event Listeners + + /// + /// 注册事件监听器 + /// + /// 事件名称,如 "onShow", "onHide" + /// 回调函数 + public void RegisterEventListener(string eventName, Action callback) + { + if (!_eventListeners.ContainsKey(eventName)) + { + _eventListeners[eventName] = new List>(); + + // 发送事件注册消息到基础库 + var request = new PCHPRequestMessage + { + type = "event_register", + requestId = GenerateRequestId(), + api = eventName, + data = "{}", + timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + }; + SendMessageInternal(JsonMapper.ToJson(request)); + } + + _eventListeners[eventName].Add(callback); + Debug.Log($"[WXPCHPInitScript] 注册事件监听: {eventName}"); + } + + /// + /// 移除事件监听器 + /// + /// 事件名称 + /// 要移除的回调函数,为null则移除所有 + public void UnregisterEventListener(string eventName, Action callback = null) + { + if (!_eventListeners.ContainsKey(eventName)) + { + return; + } + + if (callback == null) + { + _eventListeners.Remove(eventName); + } + else + { + _eventListeners[eventName].Remove(callback); + if (_eventListeners[eventName].Count == 0) + { + _eventListeners.Remove(eventName); + } + } + + // 如果没有监听器了,通知基础库取消注册 + if (!_eventListeners.ContainsKey(eventName)) + { + var request = new PCHPRequestMessage + { + type = "event_unregister", + requestId = GenerateRequestId(), + api = eventName, + data = "{}", + timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + }; + SendMessageInternal(JsonMapper.ToJson(request)); + } + + Debug.Log($"[WXPCHPInitScript] 移除事件监听: {eventName}"); + } + + #endregion + + #region Public Methods - Raw Message + + /// + /// 发送原始消息字符串 + /// + /// 消息内容 + /// 是否发送成功 + public bool SendRawMessage(string message) + { + return SendMessageInternal(message); + } + + /// + /// 发送原始消息字节数组 + /// + /// 消息数据 + /// 是否发送成功 + public bool SendMessage(byte[] data) + { + if (!IsInitialized || !IsConnected) + { + Debug.LogWarning("[WXPCHPInitScript] SDK未初始化或未连接"); + return false; + } + + if (data == null || data.Length == 0) + { + Debug.LogWarning("[WXPCHPInitScript] 发送的数据为空"); + return false; + } + + try + { + IntPtr ptr = Marshal.AllocHGlobal(data.Length); + try + { + Marshal.Copy(data, 0, ptr, data.Length); + return SendMsgAsync(ptr, data.Length); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 发送消息异常: {e.Message}"); + return false; + } + } + + #endregion + + #region Private Methods + + /// + /// 生成唯一请求ID + /// + private string GenerateRequestId() + { + return $"pchp_{++_requestIdCounter}_{DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()}"; + } + + /// + /// 内部发送消息方法 + /// + private bool SendMessageInternal(string message) + { + if (!IsInitialized || !IsConnected) + { + Debug.LogWarning("[WXPCHPInitScript] SDK未初始化或未连接"); + return false; + } + + try + { + byte[] data = System.Text.Encoding.UTF8.GetBytes(message); + return SendMessage(data); + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 发送消息异常: {e.Message}"); + return false; + } + } + + /// + /// 显示步骤信息弹窗(Windows 使用 MessageBox,其他平台使用 Debug.Log) + /// + private void ShowStepInfo(string title, string message) + { + Debug.Log($"[WXPCHPInitScript] [{title}] {message}"); +#if UNITY_STANDALONE_WIN + try + { + // MB_OK | MB_ICONINFORMATION = 0x40 + MessageBox(IntPtr.Zero, message, $"PC高性能模式 - {title}", 0x40); + } + catch (System.Exception e) + { + Debug.LogWarning($"[WXPCHPInitScript] MessageBox 调用失败: {e.Message}"); + } +#endif + } + + /// + /// 显示错误弹窗(仅 Windows) + /// + private void ShowError(string message) + { + Debug.LogError($"[WXPCHPInitScript] {message}"); +#if UNITY_STANDALONE_WIN + try + { + // MB_OK | MB_ICONERROR = 0x10 + MessageBox(IntPtr.Zero, message, "WXPCHPInitScript Error", 0x10); + } + catch (System.Exception e) + { + Debug.LogWarning($"[WXPCHPInitScript] MessageBox 调用失败: {e.Message}"); + } +#endif + } + + /// + /// 清理SDK资源 + /// + private void CleanupSDK() + { + if (!IsInitialized) + { + return; + } + + try + { + // 清理待处理回调 + _pendingCallbacks.Clear(); + _eventListeners.Clear(); + + Cleanup(); + Debug.Log("[WXPCHPInitScript] SDK清理完成"); + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 清理异常: {e.Message}"); + } + finally + { + IsInitialized = false; + IsConnected = false; + } + } + + /// + /// 在主线程中处理消息队列 + /// + private void ProcessMessageQueue() + { + while (_messageQueue.TryDequeue(out var response)) + { + try + { + ProcessResponse(response); + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 处理响应消息异常: {e.Message}"); + } + } + } + + /// + /// 处理响应消息 + /// + private void ProcessResponse(PCHPResponseMessage response) + { + if (response.type == "response") + { + // 处理API回调 + if (_pendingCallbacks.TryGetValue(response.requestId, out var callbackInfo)) + { + Debug.Log($"[WXPCHPInitScript] 收到API响应: {callbackInfo.ApiName}, callbackType: {response.callbackType}"); + + switch (response.callbackType) + { + case "success": + callbackInfo.OnSuccess?.Invoke(response.data ?? "{}"); + break; + case "fail": + callbackInfo.OnFail?.Invoke(response.data ?? $"{{\"errMsg\":\"{response.errMsg}\"}}"); + break; + case "complete": + callbackInfo.OnComplete?.Invoke(response.data ?? "{}"); + // complete 后移除回调 + _pendingCallbacks.Remove(response.requestId); + break; + } + } + else + { + Debug.LogWarning($"[WXPCHPInitScript] 未找到对应的回调: requestId={response.requestId}"); + } + } + else if (response.type == "event") + { + // 处理事件通知 + string eventName = response.api; + if (_eventListeners.TryGetValue(eventName, out var listeners)) + { + Debug.Log($"[WXPCHPInitScript] 收到事件: {eventName}"); + foreach (var listener in listeners.ToArray()) + { + try + { + listener?.Invoke(response.data ?? "{}"); + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 事件回调异常: {eventName}, {e.Message}"); + } + } + } + } + } + + /// + /// 异步消息处理回调(从DLL回调,可能在非主线程) + /// + [AOT.MonoPInvokeCallback(typeof(AsyncMsgHandlerDelegate))] + private static void HandleAsyncMessage(IntPtr data, int len) + { + if (data == IntPtr.Zero || len <= 0) + { + return; + } + + try + { + byte[] buffer = new byte[len]; + Marshal.Copy(data, buffer, 0, len); + + if (instance != null) + { + // 触发原始消息事件 + instance.OnMessageReceived?.Invoke(buffer); + + // 解析消息 + string message = System.Text.Encoding.UTF8.GetString(buffer); + Debug.Log($"[WXPCHPInitScript] 收到原始消息: {message}"); + + try + { + // 尝试解析为响应消息 + var response = JsonMapper.ToObject(message); + if (response != null && !string.IsNullOrEmpty(response.type)) + { + // 加入消息队列,在主线程中处理 + instance._messageQueue.Enqueue(response); + } + } + catch (Exception parseEx) + { + Debug.LogWarning($"[WXPCHPInitScript] 消息解析失败,可能是非标准格式: {parseEx.Message}"); + } + } + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 处理消息异常: {e.Message}"); + } + } + + #endregion + } + + /// + /// PC高性能小游戏管理器 + /// 提供类似 wx.getPCHighPerformanceManager() 的接口 + /// + public class WXPCHighPerformanceManager + { + private static WXPCHighPerformanceManager _instance; + private WXPCHPInitScript _initScript; + + /// + /// 获取 PC 高性能管理器实例 + /// + public static WXPCHighPerformanceManager GetInstance() + { + if (_instance == null) + { + _instance = new WXPCHighPerformanceManager(); + } + return _instance; + } + + private WXPCHighPerformanceManager() + { + _initScript = WXPCHPInitScript.Instance; + } + + /// + /// 是否支持PC高性能模式 + /// + public bool IsSupported => _initScript != null && _initScript.IsInitialized && _initScript.IsConnected; + + /// + /// 调用微信API + /// + public string CallWXAPI(string apiName, object data, Action onSuccess = null, Action onFail = null, Action onComplete = null) + { + if (_initScript == null) + { + Debug.LogError("[WXPCHighPerformanceManager] InitScript 未初始化"); + return null; + } + return _initScript.CallWXAPI(apiName, data, onSuccess, onFail, onComplete); + } + + /// + /// 显示 Toast + /// + public void ShowToast(PCHPShowToastOption option, Action success = null, Action fail = null, Action complete = null) + { + _initScript?.ShowToast(option, success, fail, complete); + } + + /// + /// 隐藏 Toast + /// + public void HideToast(Action success = null, Action fail = null, Action complete = null) + { + _initScript?.HideToast(success, fail, complete); + } + + /// + /// 显示模态对话框 + /// + public void ShowModal(PCHPShowModalOption option, Action success = null, Action fail = null, Action complete = null) + { + _initScript?.ShowModal(option, success, fail, complete); + } + + /// + /// 显示 Loading + /// + public void ShowLoading(string title, bool mask = false, Action success = null, Action fail = null, Action complete = null) + { + _initScript?.ShowLoading(title, mask, success, fail, complete); + } + + /// + /// 隐藏 Loading + /// + public void HideLoading(Action success = null, Action fail = null, Action complete = null) + { + _initScript?.HideLoading(success, fail, complete); + } + + /// + /// 注册事件监听 + /// + public void On(string eventName, Action callback) + { + _initScript?.RegisterEventListener(eventName, callback); + } + + /// + /// 移除事件监听 + /// + public void Off(string eventName, Action callback = null) + { + _initScript?.UnregisterEventListener(eventName, callback); + } + + /// + /// 发送原始消息 + /// + public bool SendRawMessage(string message) + { + return _initScript?.SendRawMessage(message) ?? false; + } + } +} diff --git a/Runtime/WXPCHPInitScript.cs.meta b/Runtime/WXPCHPInitScript.cs.meta new file mode 100644 index 000000000..54959e04f --- /dev/null +++ b/Runtime/WXPCHPInitScript.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 65b48177033749bf973a8af5bfb6b257 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Runtime/playable-default/check-version.js.meta b/Runtime/playable-default/check-version.js.meta index 3ee1fbe67..b6eb7a14b 100644 --- a/Runtime/playable-default/check-version.js.meta +++ b/Runtime/playable-default/check-version.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: d3d5d2167fc6b91f7fa3e08ea84c3cda + guid: f59d8747fca637ea9e1ed6238a99865d DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/data-package.meta b/Runtime/playable-default/data-package.meta index fb95538b9..d0cd0790d 100644 --- a/Runtime/playable-default/data-package.meta +++ b/Runtime/playable-default/data-package.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6c06693e00be3ab1fde2607590ab4e6d +guid: b4ac06087e533c15e0b74dfec61bbca2 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/data-package/game.js.meta b/Runtime/playable-default/data-package/game.js.meta index c68b1a91f..6395f3161 100644 --- a/Runtime/playable-default/data-package/game.js.meta +++ b/Runtime/playable-default/data-package/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: a02513af1cc852341848d1ee2622c3aa + guid: e8044c4626b2b64f11c030b35ef4be00 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/events.js.meta b/Runtime/playable-default/events.js.meta index 0481ed41a..249ed9535 100644 --- a/Runtime/playable-default/events.js.meta +++ b/Runtime/playable-default/events.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: de11e750d070e1521430f1ea7d7e9b10 + guid: c76b29672c833fdd75ac47ace2e8c2f0 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/game.js.meta b/Runtime/playable-default/game.js.meta index 4b92cef81..1864636c0 100644 --- a/Runtime/playable-default/game.js.meta +++ b/Runtime/playable-default/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 75c495849e8b58894c4df4019c28990f + guid: 76835c789ba403db92086fead5262320 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/game.json.meta b/Runtime/playable-default/game.json.meta index eb5ec6a81..4d8c67edf 100644 --- a/Runtime/playable-default/game.json.meta +++ b/Runtime/playable-default/game.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 2676c806e8720f27b3c91d7b88934aea + guid: e4a021989eec5e8c59ec11f6529d59c6 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/playable-fix.js.meta b/Runtime/playable-default/playable-fix.js.meta index 53c145c8e..f295b6d92 100644 --- a/Runtime/playable-default/playable-fix.js.meta +++ b/Runtime/playable-default/playable-fix.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: f98ab3c051a738848f5f25b3963ff875 + guid: 81a4a1dc12c8ce4e06646b881e11d7ed DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/plugin-config.js.meta b/Runtime/playable-default/plugin-config.js.meta index 08bed247a..c857806d1 100644 --- a/Runtime/playable-default/plugin-config.js.meta +++ b/Runtime/playable-default/plugin-config.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 14b4dacf147a2eb0b690def4fd2a25f8 + guid: 9587eb3c05c9bb006b30cd30c0ed132f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/plugins.meta b/Runtime/playable-default/plugins.meta index b3393336c..60f0c3f5c 100644 --- a/Runtime/playable-default/plugins.meta +++ b/Runtime/playable-default/plugins.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fdc5a07bfe255668c4bc90b063ab0439 +guid: 622b9f35b580cdf530e80603ecff1f71 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/plugins/check-update.js.meta b/Runtime/playable-default/plugins/check-update.js.meta index 2b7584192..404af9e13 100644 --- a/Runtime/playable-default/plugins/check-update.js.meta +++ b/Runtime/playable-default/plugins/check-update.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: cc12ac5f1dcfb4041e5b88bdb3d39df1 + guid: 529eb65c33391d43fe4d461ca07e1d1a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/plugins/screen-adapter.js.meta b/Runtime/playable-default/plugins/screen-adapter.js.meta index 30d3586d0..636d20036 100644 --- a/Runtime/playable-default/plugins/screen-adapter.js.meta +++ b/Runtime/playable-default/plugins/screen-adapter.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 3a78826b373fd69d30b14736655164fc + guid: 35173ddc105fccfddc1f5bde1f0745bd DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/project.config.json.meta b/Runtime/playable-default/project.config.json.meta index c0d720d1c..4867bb106 100644 --- a/Runtime/playable-default/project.config.json.meta +++ b/Runtime/playable-default/project.config.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 7e3a00c4051da2b6217cd8e156b32adc + guid: 61ba2960807827253a7593aa6c762d98 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/texture-config.js.meta b/Runtime/playable-default/texture-config.js.meta index 2bbf5fa16..715d59a6b 100644 --- a/Runtime/playable-default/texture-config.js.meta +++ b/Runtime/playable-default/texture-config.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: fa4490b63d04c3666e7d5bd6dbbe4a58 + guid: 112707a99f47c2a7dac6e8a56ce9f8b9 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-namespace.js.meta b/Runtime/playable-default/unity-namespace.js.meta index 2945472bd..47cce9af2 100644 --- a/Runtime/playable-default/unity-namespace.js.meta +++ b/Runtime/playable-default/unity-namespace.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 942f7b8a85c48dce854289ad244f3ca4 + guid: 38dcd4cc8d92c0cef78cfcf664579aa5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-playable-plugin.meta b/Runtime/playable-default/unity-playable-plugin.meta index d18d1f76d..7db361e5a 100644 --- a/Runtime/playable-default/unity-playable-plugin.meta +++ b/Runtime/playable-default/unity-playable-plugin.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4dadbfddf470bde3a646527500a79bb6 +guid: 405ac7151c7bfcc3bb9f8eb76e620d5e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/unity-playable-plugin/index.js.meta b/Runtime/playable-default/unity-playable-plugin/index.js.meta index 37f7d5cd5..6441cf57b 100644 --- a/Runtime/playable-default/unity-playable-plugin/index.js.meta +++ b/Runtime/playable-default/unity-playable-plugin/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 1516197a3756cc06853320f648bd30f2 + guid: ff9165f4e6fa43f94e9c2276b0d37fbf DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk.meta b/Runtime/playable-default/unity-sdk.meta index e69020b1b..f09139180 100644 --- a/Runtime/playable-default/unity-sdk.meta +++ b/Runtime/playable-default/unity-sdk.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b193152a2bbc37d0feda3c6544e7afc8 +guid: c47170c3337121a34ba094d1826aa7ec folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/unity-sdk/audio.meta b/Runtime/playable-default/unity-sdk/audio.meta index f4c7747ef..f013cf620 100644 --- a/Runtime/playable-default/unity-sdk/audio.meta +++ b/Runtime/playable-default/unity-sdk/audio.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b5a694336b7dd91fd242250f890f19b5 +guid: 0e3dad74eabf02a8081161feddecb041 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/unity-sdk/audio/common.js.meta b/Runtime/playable-default/unity-sdk/audio/common.js.meta index d7c4d78d0..a283fad5a 100644 --- a/Runtime/playable-default/unity-sdk/audio/common.js.meta +++ b/Runtime/playable-default/unity-sdk/audio/common.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 5f862d1c69deabf4048bebed751c846d + guid: 7d2104faaa82dcdb7bdb079bf5a8838f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/audio/const.js.meta b/Runtime/playable-default/unity-sdk/audio/const.js.meta index 1b2ee6429..74b42d532 100644 --- a/Runtime/playable-default/unity-sdk/audio/const.js.meta +++ b/Runtime/playable-default/unity-sdk/audio/const.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 7eb49c157fec3510cca59918268546d6 + guid: c4b1eb248e67771d19220c2e64d7be3f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/audio/index.js.meta b/Runtime/playable-default/unity-sdk/audio/index.js.meta index 4d2f50fe9..5e67dca91 100644 --- a/Runtime/playable-default/unity-sdk/audio/index.js.meta +++ b/Runtime/playable-default/unity-sdk/audio/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: f6eb3ae66cc21f0114a7c9e15ac57d76 + guid: 2c0cec4ade694e9ee7cd6b6d12bcc7f5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/audio/inner-audio.js.meta b/Runtime/playable-default/unity-sdk/audio/inner-audio.js.meta index 8e85a55bd..29b9c9703 100644 --- a/Runtime/playable-default/unity-sdk/audio/inner-audio.js.meta +++ b/Runtime/playable-default/unity-sdk/audio/inner-audio.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 1151cf42fe9e3fe2b444ddddbde08396 + guid: e0ba370afe2f07a5eb0a0cc3fd131851 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/audio/store.js.meta b/Runtime/playable-default/unity-sdk/audio/store.js.meta index 00ac079e0..3816012ad 100644 --- a/Runtime/playable-default/unity-sdk/audio/store.js.meta +++ b/Runtime/playable-default/unity-sdk/audio/store.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 2b6db07c37dc2366237d59d8f785fd48 + guid: c37ebb0824be75998a2dad53d38cfcb5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/audio/unity-audio.js.meta b/Runtime/playable-default/unity-sdk/audio/unity-audio.js.meta index 9600bc8c0..fc1e43718 100644 --- a/Runtime/playable-default/unity-sdk/audio/unity-audio.js.meta +++ b/Runtime/playable-default/unity-sdk/audio/unity-audio.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 0e2b29c063f2d000be5dd2313958fa6c + guid: e767f506021898bdf7fa1f2524416f87 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/audio/utils.js.meta b/Runtime/playable-default/unity-sdk/audio/utils.js.meta index d1144c63b..b525631c4 100644 --- a/Runtime/playable-default/unity-sdk/audio/utils.js.meta +++ b/Runtime/playable-default/unity-sdk/audio/utils.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: d34cf0ce316d07409a850c605540a013 + guid: 113ccb514fd19ef57ad8eae1f4331bde DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/canvas-context.js.meta b/Runtime/playable-default/unity-sdk/canvas-context.js.meta index ef3bf7b3a..1feb77a2c 100644 --- a/Runtime/playable-default/unity-sdk/canvas-context.js.meta +++ b/Runtime/playable-default/unity-sdk/canvas-context.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: d91ef4c43c9f3c9a6da9a65b379b5740 + guid: a78afa45133fb1c30dde6e57eb91bc37 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/canvas.js.meta b/Runtime/playable-default/unity-sdk/canvas.js.meta index fb3860152..89d4c354d 100644 --- a/Runtime/playable-default/unity-sdk/canvas.js.meta +++ b/Runtime/playable-default/unity-sdk/canvas.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 6660a6a8aacee1f2096340441fdbd3ce + guid: c3e82d2d6b6c31998be674adeb42161e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/conf.js.meta b/Runtime/playable-default/unity-sdk/conf.js.meta index 6bab336a1..1c8da3dfc 100644 --- a/Runtime/playable-default/unity-sdk/conf.js.meta +++ b/Runtime/playable-default/unity-sdk/conf.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 119c8bb6b0ad127ed8bac3162a9969f8 + guid: f131285adc46308635db5d4d31c5fac8 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/file-info.js.meta b/Runtime/playable-default/unity-sdk/file-info.js.meta index 15fe9bdb1..4cc023b80 100644 --- a/Runtime/playable-default/unity-sdk/file-info.js.meta +++ b/Runtime/playable-default/unity-sdk/file-info.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 59d869d78f133094896b88faa762234a + guid: 53f4598065a06fcb66d406be060e4002 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/fix.js.meta b/Runtime/playable-default/unity-sdk/fix.js.meta index 24628b842..80175dab0 100644 --- a/Runtime/playable-default/unity-sdk/fix.js.meta +++ b/Runtime/playable-default/unity-sdk/fix.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 34d39008817c30ca826af31fc01525e7 + guid: 1114a1fa8844ef6e345a4819cb1fb00b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/fs.js.meta b/Runtime/playable-default/unity-sdk/fs.js.meta index 2ea010643..2f4df6e1a 100644 --- a/Runtime/playable-default/unity-sdk/fs.js.meta +++ b/Runtime/playable-default/unity-sdk/fs.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 73a18f6a646fbaf0e8526fc1526ae97a + guid: 3bc782e54bf16b33e5ef4904d8fc9904 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/index.js.meta b/Runtime/playable-default/unity-sdk/index.js.meta index ab924e481..931157f51 100644 --- a/Runtime/playable-default/unity-sdk/index.js.meta +++ b/Runtime/playable-default/unity-sdk/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c9e4678df01d9876b1b0aa336ee45401 + guid: 31d51254f77a59b0287c3a025c41d865 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/logger.js.meta b/Runtime/playable-default/unity-sdk/logger.js.meta index 42775c959..cefa51d4c 100644 --- a/Runtime/playable-default/unity-sdk/logger.js.meta +++ b/Runtime/playable-default/unity-sdk/logger.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c2c849f6ee1aeeb7f9ccc36695a38d24 + guid: f3104dcba8fc8587babb5b9d23d2998b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/mobileKeyboard.meta b/Runtime/playable-default/unity-sdk/mobileKeyboard.meta index af2d906db..11737f665 100644 --- a/Runtime/playable-default/unity-sdk/mobileKeyboard.meta +++ b/Runtime/playable-default/unity-sdk/mobileKeyboard.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b2200a16cb9b949081f51aa4fe6807bd +guid: b609109f7d9d0df637da60c544ed03e4 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/unity-sdk/mobileKeyboard/index.js.meta b/Runtime/playable-default/unity-sdk/mobileKeyboard/index.js.meta index 8f0603112..3d8093817 100644 --- a/Runtime/playable-default/unity-sdk/mobileKeyboard/index.js.meta +++ b/Runtime/playable-default/unity-sdk/mobileKeyboard/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: b89e0228f0375beca9b6d7b1ad95356a + guid: 5f493c45ddd38eeaa9c26e9941d8cda5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/module-helper.js.meta b/Runtime/playable-default/unity-sdk/module-helper.js.meta index 922378151..6fe61b8f4 100644 --- a/Runtime/playable-default/unity-sdk/module-helper.js.meta +++ b/Runtime/playable-default/unity-sdk/module-helper.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c82e223e59fd93811d3aa303bb51f02e + guid: 3e96de7074ae43a70b1e5fd1c14cae72 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/recorder.js.meta b/Runtime/playable-default/unity-sdk/recorder.js.meta index 0dc3e8b8d..6d3635867 100644 --- a/Runtime/playable-default/unity-sdk/recorder.js.meta +++ b/Runtime/playable-default/unity-sdk/recorder.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 3c570e4eb7ff538d7aa640fb8c3d02da + guid: 536efc6d3010333e432f686b597552f5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/resType.js.meta b/Runtime/playable-default/unity-sdk/resType.js.meta index e4d29d04d..48affd039 100644 --- a/Runtime/playable-default/unity-sdk/resType.js.meta +++ b/Runtime/playable-default/unity-sdk/resType.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 9a8702f6acee306755d112480d39813c + guid: 9d8f4c1f1e201ee7ec512bbdfc04a2b8 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/resTypeOther.js.meta b/Runtime/playable-default/unity-sdk/resTypeOther.js.meta index 5b99b9ca8..c141062dc 100644 --- a/Runtime/playable-default/unity-sdk/resTypeOther.js.meta +++ b/Runtime/playable-default/unity-sdk/resTypeOther.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 90a536e2c5a0814cc1c58b70c92da9a4 + guid: 1f3924be5580b642a3477fdc82b6b171 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/response.js.meta b/Runtime/playable-default/unity-sdk/response.js.meta index da697a76c..2191edd6f 100644 --- a/Runtime/playable-default/unity-sdk/response.js.meta +++ b/Runtime/playable-default/unity-sdk/response.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 02830b8246e010bdd89e47fefd9adf6b + guid: 17f863f9d572cd02e6893a37132c8b76 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/sdk.js.meta b/Runtime/playable-default/unity-sdk/sdk.js.meta index 9dedb472b..e0ec3caed 100644 --- a/Runtime/playable-default/unity-sdk/sdk.js.meta +++ b/Runtime/playable-default/unity-sdk/sdk.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 853f4640fa1b8a092c4ccb4669d6971c + guid: 83634043434e083a89ba9b520d1ee91e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/special-callbacks.js.meta b/Runtime/playable-default/unity-sdk/special-callbacks.js.meta index c177f04e9..88c2908e7 100644 --- a/Runtime/playable-default/unity-sdk/special-callbacks.js.meta +++ b/Runtime/playable-default/unity-sdk/special-callbacks.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 24c205c5759ec41da1b00eda2ac42564 + guid: e409086e03334b62d3ab7fcb3ea36cff DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/texture.js.meta b/Runtime/playable-default/unity-sdk/texture.js.meta index 9cf4f8537..2d32fb7f9 100644 --- a/Runtime/playable-default/unity-sdk/texture.js.meta +++ b/Runtime/playable-default/unity-sdk/texture.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 9782628a70978396e495b86274aa398d + guid: 1efe9f40820e3ec1ecee9eedc8f73e64 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/touch.meta b/Runtime/playable-default/unity-sdk/touch.meta index b3ce6d8cc..67950956c 100644 --- a/Runtime/playable-default/unity-sdk/touch.meta +++ b/Runtime/playable-default/unity-sdk/touch.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 674bba89e7bc0b330d4920c8a1d2470f +guid: 661059591bfd5597c4839ed07a8c49fb folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/unity-sdk/touch/index.js.meta b/Runtime/playable-default/unity-sdk/touch/index.js.meta index 71cc2b1bc..148e27ff2 100644 --- a/Runtime/playable-default/unity-sdk/touch/index.js.meta +++ b/Runtime/playable-default/unity-sdk/touch/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: faa496c26f840b60f61ac89b5f564f32 + guid: 49b065491eba4e21a8f0c7d168e2d823 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/util.js.meta b/Runtime/playable-default/unity-sdk/util.js.meta index 0d550a94b..aefdf3882 100644 --- a/Runtime/playable-default/unity-sdk/util.js.meta +++ b/Runtime/playable-default/unity-sdk/util.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 6cbac21da9894d5092f47042e7dcab8e + guid: 067861c3953b0d2d96e915cfc84009c2 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/utils.js.meta b/Runtime/playable-default/unity-sdk/utils.js.meta index 19d7152b9..61cd9980e 100644 --- a/Runtime/playable-default/unity-sdk/utils.js.meta +++ b/Runtime/playable-default/unity-sdk/utils.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: aa534e5bd9009a4f986abd6cc2ff823b + guid: 315e2f3f0fbd70d136c8cf0f3812819c DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/video.js.meta b/Runtime/playable-default/unity-sdk/video.js.meta index 3f6123120..9f7459a00 100644 --- a/Runtime/playable-default/unity-sdk/video.js.meta +++ b/Runtime/playable-default/unity-sdk/video.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 3251c8f50cca5fae20e0e2bbc567bf40 + guid: 5abf1ca9ef8ca4b6f094c58fc5fd3117 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/video.meta b/Runtime/playable-default/unity-sdk/video.meta index f65da60aa..3e3964ada 100644 --- a/Runtime/playable-default/unity-sdk/video.meta +++ b/Runtime/playable-default/unity-sdk/video.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6ee130afc0339063c59da8a830c7663e +guid: 88a9bc1782544991e45e0b879f6520dc folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/unity-sdk/video/index.js.meta b/Runtime/playable-default/unity-sdk/video/index.js.meta index 63baed34d..b114f95bf 100644 --- a/Runtime/playable-default/unity-sdk/video/index.js.meta +++ b/Runtime/playable-default/unity-sdk/video/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 30161526e5960c70e6965463a8c98492 + guid: cc907208ac06091e6166c5a9df9c8b71 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/wasmcode.meta b/Runtime/playable-default/wasmcode.meta index ba0aa256d..862c74b74 100644 --- a/Runtime/playable-default/wasmcode.meta +++ b/Runtime/playable-default/wasmcode.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 47d2bb9aac0b87cfdf12358dc192e755 +guid: 4941fdfc1737f7e2315a06de163877be folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/wasmcode/game.js.meta b/Runtime/playable-default/wasmcode/game.js.meta index 11e065318..00872f3a7 100644 --- a/Runtime/playable-default/wasmcode/game.js.meta +++ b/Runtime/playable-default/wasmcode/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 7babfccd3322d8f0bb49bb466cc03624 + guid: e81cadbf0433b850d3c05f7a48f6b40f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/weapp-adapter.js.meta b/Runtime/playable-default/weapp-adapter.js.meta index 04b3af04a..4ccc8f11a 100644 --- a/Runtime/playable-default/weapp-adapter.js.meta +++ b/Runtime/playable-default/weapp-adapter.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: a99dd0e69496ec987fc46d387fee8587 + guid: 8e601a043a308a0dea8deb0adaf64dea DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/check-version.js.meta b/Runtime/wechat-default/check-version.js.meta index 69124942e..62d0c5e58 100644 --- a/Runtime/wechat-default/check-version.js.meta +++ b/Runtime/wechat-default/check-version.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: deb969752e56efd1f30292483076fe8d + guid: cfecbc8c8242e662f8d459b9b76522b3 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/data-package.meta b/Runtime/wechat-default/data-package.meta index a2d178242..d6217e461 100644 --- a/Runtime/wechat-default/data-package.meta +++ b/Runtime/wechat-default/data-package.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 873c3ff5c09c499cea533e76613b289c +guid: 61cb411bf0ae820005bfb65f13ae3357 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/data-package/game.js.meta b/Runtime/wechat-default/data-package/game.js.meta index e3a33d18d..03833d777 100644 --- a/Runtime/wechat-default/data-package/game.js.meta +++ b/Runtime/wechat-default/data-package/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: b62dfcd3bba0143fe64bb393b6718200 + guid: ac39bbaef6e6800a9ac470a0bed4603a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/events.js.meta b/Runtime/wechat-default/events.js.meta index e2aba010f..80eef5a4e 100644 --- a/Runtime/wechat-default/events.js.meta +++ b/Runtime/wechat-default/events.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 0f5d268ad00ae324c34a888a2bc0f3b9 + guid: 3c9ee14ad9c22545f74cf902c5ca64b0 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/game.js.meta b/Runtime/wechat-default/game.js.meta index 88a17a104..46d12e26c 100644 --- a/Runtime/wechat-default/game.js.meta +++ b/Runtime/wechat-default/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c4b7634dc3628a25ae87b92a174f5056 + guid: fe3e5254cc5ceea3abcbe2e73156c990 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/game.json.meta b/Runtime/wechat-default/game.json.meta index 71ff9558f..d91282020 100644 --- a/Runtime/wechat-default/game.json.meta +++ b/Runtime/wechat-default/game.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: acc81d1c264bc0dadd4552d59e6b5cc0 + guid: 05d462276cef04db60b6aaaaa7792dbe DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/images.meta b/Runtime/wechat-default/images.meta index a759e39d2..3559b324d 100644 --- a/Runtime/wechat-default/images.meta +++ b/Runtime/wechat-default/images.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 304fa8442a722ea29aaf75c80ecf36d0 +guid: f5ef625b4ba886d0a97467d08bf74664 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/images/background.jpg.meta b/Runtime/wechat-default/images/background.jpg.meta index 84907c342..9839573dd 100644 --- a/Runtime/wechat-default/images/background.jpg.meta +++ b/Runtime/wechat-default/images/background.jpg.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 07577f5e35b0d9d10be3e7da2f636244 + guid: d6112c80bd499b08f67ead150c2ba382 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/images/unity_logo.png.meta b/Runtime/wechat-default/images/unity_logo.png.meta index 3bc5caad9..d35cd285a 100644 --- a/Runtime/wechat-default/images/unity_logo.png.meta +++ b/Runtime/wechat-default/images/unity_logo.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 90f5231878ca8f4be00b3ce66b678dd1 + guid: 1b3e0418d13e905be94acf5504289602 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data.meta b/Runtime/wechat-default/open-data.meta index 407e58d88..dd129711f 100644 --- a/Runtime/wechat-default/open-data.meta +++ b/Runtime/wechat-default/open-data.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f54994eb4369a71edd1d509002ad2f14 +guid: b3d03a247ee9a5613eeb3ec344e6a214 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/open-data/data.meta b/Runtime/wechat-default/open-data/data.meta index 8b4d35470..bb028fc25 100644 --- a/Runtime/wechat-default/open-data/data.meta +++ b/Runtime/wechat-default/open-data/data.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 48fbcdad3f9d3b9f921019659939b17c +guid: dbdd9fa656a10c6fbc78ba97f82ec204 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/open-data/data/index.js.meta b/Runtime/wechat-default/open-data/data/index.js.meta index a38acefeb..188da2ac5 100644 --- a/Runtime/wechat-default/open-data/data/index.js.meta +++ b/Runtime/wechat-default/open-data/data/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 116976e02bc785ec509b059f15a5826b + guid: 66c172993a9eb2f030b29786380e18fe DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/data/utils.js.meta b/Runtime/wechat-default/open-data/data/utils.js.meta index 63fc5362d..f55a7ee1c 100644 --- a/Runtime/wechat-default/open-data/data/utils.js.meta +++ b/Runtime/wechat-default/open-data/data/utils.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 39b854a719f26a74ceafd3208b3d1559 + guid: e5a38e011d4112aa6c54c75d4d8f9f63 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/index.js.meta b/Runtime/wechat-default/open-data/index.js.meta index f513e21c5..3a340882c 100644 --- a/Runtime/wechat-default/open-data/index.js.meta +++ b/Runtime/wechat-default/open-data/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 71c319aa5539d8cc938c59c1f95015a2 + guid: 6304574f5b8ba5a90b6072c96eea3aea DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/loading.js.meta b/Runtime/wechat-default/open-data/loading.js.meta index 654458fb3..e69fe54ad 100644 --- a/Runtime/wechat-default/open-data/loading.js.meta +++ b/Runtime/wechat-default/open-data/loading.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 4c4cd8fe6d78dca85ddf042297dbfa8e + guid: 5668a6d4fcf8791f310b6b7ee7cdd2ed DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render.meta b/Runtime/wechat-default/open-data/render.meta index f38c2a239..ed7e16c58 100644 --- a/Runtime/wechat-default/open-data/render.meta +++ b/Runtime/wechat-default/open-data/render.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bfe81ba23a1b4042745b051435b5580c +guid: e3890675c9c677f4b36325203d43483b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/open-data/render/image.meta b/Runtime/wechat-default/open-data/render/image.meta index 0dfdf02e4..cf5256151 100644 --- a/Runtime/wechat-default/open-data/render/image.meta +++ b/Runtime/wechat-default/open-data/render/image.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b2047abd88a0e4c828645361f0825461 +guid: 317802708317ec7f924e0260cdd50695 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/open-data/render/image/avatar.png.meta b/Runtime/wechat-default/open-data/render/image/avatar.png.meta index 21836350e..4365f953e 100644 --- a/Runtime/wechat-default/open-data/render/image/avatar.png.meta +++ b/Runtime/wechat-default/open-data/render/image/avatar.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 05954e3656c1b42399214f7a474e1dc3 + guid: fa8338dd9015212727752266334059ad DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/button1.png.meta b/Runtime/wechat-default/open-data/render/image/button1.png.meta index ef8a18a7c..ea2f0337c 100644 --- a/Runtime/wechat-default/open-data/render/image/button1.png.meta +++ b/Runtime/wechat-default/open-data/render/image/button1.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: a10c90dec186b4fb6907d4c144ee7ab5 + guid: 79eaed91ff7cdd60134a914dbe20fdf5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/button2.png.meta b/Runtime/wechat-default/open-data/render/image/button2.png.meta index b91ed14fb..9904ef43d 100644 --- a/Runtime/wechat-default/open-data/render/image/button2.png.meta +++ b/Runtime/wechat-default/open-data/render/image/button2.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 9aa5b725da3747ea7fdd3007c9fc1e9a + guid: 0ccba57b005ba088605fff8e6ecb4fc2 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/button3.png.meta b/Runtime/wechat-default/open-data/render/image/button3.png.meta index d338d6aee..110f586a0 100644 --- a/Runtime/wechat-default/open-data/render/image/button3.png.meta +++ b/Runtime/wechat-default/open-data/render/image/button3.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 3af9f84d877d17c7ba3a46100af46468 + guid: 04140a75144884481ea0cdab345189c0 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/loading.png.meta b/Runtime/wechat-default/open-data/render/image/loading.png.meta index 02b41f253..f47c6b1b3 100644 --- a/Runtime/wechat-default/open-data/render/image/loading.png.meta +++ b/Runtime/wechat-default/open-data/render/image/loading.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 55b4fb765fdc8b3266dd1a0bbc43e676 + guid: 1e83ad9720fba3ace5a7df5c1fcac0dc DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/nameBg.png.meta b/Runtime/wechat-default/open-data/render/image/nameBg.png.meta index cb120a372..9d7a1812c 100644 --- a/Runtime/wechat-default/open-data/render/image/nameBg.png.meta +++ b/Runtime/wechat-default/open-data/render/image/nameBg.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 00afcfdfb3003edd8e2b656b605b3ffa + guid: 1c0d4c3b177052b63ae258e44b705847 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/rankAvatar.png.meta b/Runtime/wechat-default/open-data/render/image/rankAvatar.png.meta index f4277baa1..a75410d6b 100644 --- a/Runtime/wechat-default/open-data/render/image/rankAvatar.png.meta +++ b/Runtime/wechat-default/open-data/render/image/rankAvatar.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 89cb03c9ed8a7e361bce00ef148ccbf2 + guid: 952063c730a4a456da2cdc267b591460 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/rankBg.png.meta b/Runtime/wechat-default/open-data/render/image/rankBg.png.meta index 38398ff45..730501ac6 100644 --- a/Runtime/wechat-default/open-data/render/image/rankBg.png.meta +++ b/Runtime/wechat-default/open-data/render/image/rankBg.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 59e31d5214092a6aac6c531551853ca0 + guid: bff86cdd9d5398be182e90dd55f2c198 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/shareBg.png.meta b/Runtime/wechat-default/open-data/render/image/shareBg.png.meta index 45d0d4685..3f780e94d 100644 --- a/Runtime/wechat-default/open-data/render/image/shareBg.png.meta +++ b/Runtime/wechat-default/open-data/render/image/shareBg.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 4a5a798604b6be679069a20a57e11ae1 + guid: a08fad48e57538eede181a4cbf456bda DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/image/shareBg2.png.meta b/Runtime/wechat-default/open-data/render/image/shareBg2.png.meta index fd027e578..9780fd19e 100644 --- a/Runtime/wechat-default/open-data/render/image/shareBg2.png.meta +++ b/Runtime/wechat-default/open-data/render/image/shareBg2.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 9a5673030b9bf70f70afdca6c803b04c + guid: 2762fd157b912818994c66d5624dbebc DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/styles.meta b/Runtime/wechat-default/open-data/render/styles.meta index 80c139eb2..37be2ea74 100644 --- a/Runtime/wechat-default/open-data/render/styles.meta +++ b/Runtime/wechat-default/open-data/render/styles.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a58425242d56601ca5e7a8bf142541f6 +guid: 50dab14bfe32315fe23ea9bf94cfe7a4 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/open-data/render/styles/friendRank.js.meta b/Runtime/wechat-default/open-data/render/styles/friendRank.js.meta index 50c297394..1ff579b3a 100644 --- a/Runtime/wechat-default/open-data/render/styles/friendRank.js.meta +++ b/Runtime/wechat-default/open-data/render/styles/friendRank.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 29cded948b6b950b5355ab9df10b67f1 + guid: 3fc05d68ce0bd085a89253ae8da1af17 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/styles/tips.js.meta b/Runtime/wechat-default/open-data/render/styles/tips.js.meta index 5809ce348..3e4717c0b 100644 --- a/Runtime/wechat-default/open-data/render/styles/tips.js.meta +++ b/Runtime/wechat-default/open-data/render/styles/tips.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: f6bd670007bd1d4bc41da7f15fb61de3 + guid: 46b1d2fa27095d131bc47a04215ab7fb DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/tpls.meta b/Runtime/wechat-default/open-data/render/tpls.meta index 733956fcb..1a74490f2 100644 --- a/Runtime/wechat-default/open-data/render/tpls.meta +++ b/Runtime/wechat-default/open-data/render/tpls.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5f46ee06f252207d0c6c78773d336387 +guid: b68222c60c40bc5785f70348fbbe07b7 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/open-data/render/tpls/friendRank.js.meta b/Runtime/wechat-default/open-data/render/tpls/friendRank.js.meta index c870e9e55..0992174e2 100644 --- a/Runtime/wechat-default/open-data/render/tpls/friendRank.js.meta +++ b/Runtime/wechat-default/open-data/render/tpls/friendRank.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 6b99f11c83f8a7a71c350d75494fe556 + guid: 2f4e7c3cc4df49f99243599c66fa0c13 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render/tpls/tips.js.meta b/Runtime/wechat-default/open-data/render/tpls/tips.js.meta index 3510e5d57..7fb7df9ca 100644 --- a/Runtime/wechat-default/open-data/render/tpls/tips.js.meta +++ b/Runtime/wechat-default/open-data/render/tpls/tips.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: ff57ccfe8dab7a471b52563b9972e2c3 + guid: 09b675f560520e0c53221e5b4883be38 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/plugin-config.js.meta b/Runtime/wechat-default/plugin-config.js.meta index 3f17ab3a7..146a15675 100644 --- a/Runtime/wechat-default/plugin-config.js.meta +++ b/Runtime/wechat-default/plugin-config.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: f9cf8a7a084a8619a252f84e1fb1f251 + guid: 734e352cca32ede7702f65b77623b49a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/plugins.meta b/Runtime/wechat-default/plugins.meta index fc981b2a9..b8ff4b6de 100644 --- a/Runtime/wechat-default/plugins.meta +++ b/Runtime/wechat-default/plugins.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6a74b91bbf9d4d98c4fff2ffab7a52c9 +guid: 16ba879d2b5b912394d280a1e8e71e0e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/plugins/check-update.js.meta b/Runtime/wechat-default/plugins/check-update.js.meta index df1bfdbcb..4daf0710a 100644 --- a/Runtime/wechat-default/plugins/check-update.js.meta +++ b/Runtime/wechat-default/plugins/check-update.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 26d8803cf9ba80350590438dd73bc5ca + guid: 823a723316508347a21a949777ec33fd DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/plugins/screen-adapter.js.meta b/Runtime/wechat-default/plugins/screen-adapter.js.meta index 49d987b5e..a701b7eef 100644 --- a/Runtime/wechat-default/plugins/screen-adapter.js.meta +++ b/Runtime/wechat-default/plugins/screen-adapter.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 96a9103f7ec0a0d4fe95340265f74ecf + guid: 6e6c9bedda987c0238fe5649c95159ea DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/project.config.json.meta b/Runtime/wechat-default/project.config.json.meta index e49b727e1..bf0fd94ce 100644 --- a/Runtime/wechat-default/project.config.json.meta +++ b/Runtime/wechat-default/project.config.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: edb9d40efac2bdc4f79004a24386e758 + guid: 7180ee6470469705a43e60b347c64e75 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/texture-config.js.meta b/Runtime/wechat-default/texture-config.js.meta index 287bac263..0df4cf082 100644 --- a/Runtime/wechat-default/texture-config.js.meta +++ b/Runtime/wechat-default/texture-config.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: cee42bcbf2a6dc2f7ee386bdd7e6b7a6 + guid: 742d327c93d14a44f44670e35aee0859 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-namespace.js.meta b/Runtime/wechat-default/unity-namespace.js.meta index 2b1180e8d..4a14a71bf 100644 --- a/Runtime/wechat-default/unity-namespace.js.meta +++ b/Runtime/wechat-default/unity-namespace.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 21b27cff06bdcc6455c16b124f88c9ac + guid: b8d929df07e9206bdba2655716049133 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk.meta b/Runtime/wechat-default/unity-sdk.meta index 15cc2d141..f1b374aba 100644 --- a/Runtime/wechat-default/unity-sdk.meta +++ b/Runtime/wechat-default/unity-sdk.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f5411f494113c860af36d9dc677da755 +guid: e152b9247ca5f101629def57435dc092 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/TCPSocket.meta b/Runtime/wechat-default/unity-sdk/TCPSocket.meta index cfd10c115..b19afcb1a 100644 --- a/Runtime/wechat-default/unity-sdk/TCPSocket.meta +++ b/Runtime/wechat-default/unity-sdk/TCPSocket.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 200c2363eb490ac8bd42de6a6152acb7 +guid: 63cd12705ad01018342b1b4ec521692e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/TCPSocket/index.js.meta b/Runtime/wechat-default/unity-sdk/TCPSocket/index.js.meta index 92d547e00..459cc3be3 100644 --- a/Runtime/wechat-default/unity-sdk/TCPSocket/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/TCPSocket/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c62268f3cbc41cfa6a869aa488b7dcaa + guid: b6afa7a9f6f166d34eb8a47591782dc4 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/UDPSocket.meta b/Runtime/wechat-default/unity-sdk/UDPSocket.meta index 56dd83b4c..71b07164d 100644 --- a/Runtime/wechat-default/unity-sdk/UDPSocket.meta +++ b/Runtime/wechat-default/unity-sdk/UDPSocket.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5d17de8310e96d5659e9eedc881d8caf +guid: 26dd644ec9970be9e46b3c5c72cb8e9d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/UDPSocket/index.js.meta b/Runtime/wechat-default/unity-sdk/UDPSocket/index.js.meta index b7f7dde93..4c54ea4d4 100644 --- a/Runtime/wechat-default/unity-sdk/UDPSocket/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/UDPSocket/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 90de48298fb45b9074181f93ec2daade + guid: b4f9969184fa1ff35f9c4cf19e109a92 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/ad.js.meta b/Runtime/wechat-default/unity-sdk/ad.js.meta index 63cd9f370..6349b0b66 100644 --- a/Runtime/wechat-default/unity-sdk/ad.js.meta +++ b/Runtime/wechat-default/unity-sdk/ad.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: d111d3fd9892730124f6eb52437251c3 + guid: feb2c8f6722dd5dfbee5cd8d6b20766e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio.meta b/Runtime/wechat-default/unity-sdk/audio.meta index cfb18e7e4..a9668a984 100644 --- a/Runtime/wechat-default/unity-sdk/audio.meta +++ b/Runtime/wechat-default/unity-sdk/audio.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3c3df3a78955de8c28dc7c459aded8ff +guid: 3efe6b2b7285c061ff9de84690fc1a3d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/audio/common.js.meta b/Runtime/wechat-default/unity-sdk/audio/common.js.meta index 3aef7145c..43708ad29 100644 --- a/Runtime/wechat-default/unity-sdk/audio/common.js.meta +++ b/Runtime/wechat-default/unity-sdk/audio/common.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 525f9e24a2e7e928d6d04b11580c04be + guid: 5befe02d227582b3191ed207c2a3f138 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio/const.js.meta b/Runtime/wechat-default/unity-sdk/audio/const.js.meta index cf990437b..4640d77d2 100644 --- a/Runtime/wechat-default/unity-sdk/audio/const.js.meta +++ b/Runtime/wechat-default/unity-sdk/audio/const.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 8aca97c9d6119da269ba15f63acfede4 + guid: a78eaddf93c01804a1a9c850f82c08a8 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio/index.js.meta b/Runtime/wechat-default/unity-sdk/audio/index.js.meta index 22038d6f9..da2e032c5 100644 --- a/Runtime/wechat-default/unity-sdk/audio/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/audio/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 6402c7c79ecacc3240c1adf0319f7c89 + guid: 4a2f3091dbd197c6b9ace4823bd6d9d6 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio/inner-audio.js.meta b/Runtime/wechat-default/unity-sdk/audio/inner-audio.js.meta index 8dd92d36f..2460df0b2 100644 --- a/Runtime/wechat-default/unity-sdk/audio/inner-audio.js.meta +++ b/Runtime/wechat-default/unity-sdk/audio/inner-audio.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: d500a2aa78215a88443bfe7115e1ccf2 + guid: 39632b118ba97c46c9b36c1ab92fcbbf DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio/store.js.meta b/Runtime/wechat-default/unity-sdk/audio/store.js.meta index ff1c7a51e..bbf287e7f 100644 --- a/Runtime/wechat-default/unity-sdk/audio/store.js.meta +++ b/Runtime/wechat-default/unity-sdk/audio/store.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c406972ff66cdfdea6b3856ec52f6e19 + guid: 09a580bdc3b98b7414aa7b1cec950f31 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio/unity-audio.js.meta b/Runtime/wechat-default/unity-sdk/audio/unity-audio.js.meta index d1198d25e..4751ff723 100644 --- a/Runtime/wechat-default/unity-sdk/audio/unity-audio.js.meta +++ b/Runtime/wechat-default/unity-sdk/audio/unity-audio.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 95da111cd0fd60e43b7cb02a7bc38fd1 + guid: ff9d812e2d096d092fd293fd7cd648ab DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio/utils.js.meta b/Runtime/wechat-default/unity-sdk/audio/utils.js.meta index 599eb5742..b40fbf54d 100644 --- a/Runtime/wechat-default/unity-sdk/audio/utils.js.meta +++ b/Runtime/wechat-default/unity-sdk/audio/utils.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 52bb3fb3cd0456b94ed3bd611de4227d + guid: ead8278b273337c98b975d5f17b1cf90 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/authorize.js.meta b/Runtime/wechat-default/unity-sdk/authorize.js.meta index ecfee1b34..fc6f559b7 100644 --- a/Runtime/wechat-default/unity-sdk/authorize.js.meta +++ b/Runtime/wechat-default/unity-sdk/authorize.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 4a3c2e5d9acbe7daffe66f981f2c8355 + guid: 5f0a1db17ed2c54e510bbd026a54c8a3 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/bluetooth.meta b/Runtime/wechat-default/unity-sdk/bluetooth.meta index 2830c2a0d..afa1dca15 100644 --- a/Runtime/wechat-default/unity-sdk/bluetooth.meta +++ b/Runtime/wechat-default/unity-sdk/bluetooth.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e3ced4be60a007b23382c35a96c329c8 +guid: 6e34927aaba15a367f60d6b55852eb5d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/bluetooth/index.js.meta b/Runtime/wechat-default/unity-sdk/bluetooth/index.js.meta index 3bed9bf74..605bd4e0f 100644 --- a/Runtime/wechat-default/unity-sdk/bluetooth/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/bluetooth/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: ea18d2b47acdcd3fbd34ae8a4228936a + guid: 32d47237ba2d5c2669a01df1b6ed3e12 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/camera.js.meta b/Runtime/wechat-default/unity-sdk/camera.js.meta index 3bcf4be7d..23ae18d54 100644 --- a/Runtime/wechat-default/unity-sdk/camera.js.meta +++ b/Runtime/wechat-default/unity-sdk/camera.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 2298b5ff5eef247e681f2a1b4a31ced8 + guid: 9cc6debeaa0a01623bca29a231e2d8ff DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/canvas-context.js.meta b/Runtime/wechat-default/unity-sdk/canvas-context.js.meta index cdce1e1c5..1a4d736dc 100644 --- a/Runtime/wechat-default/unity-sdk/canvas-context.js.meta +++ b/Runtime/wechat-default/unity-sdk/canvas-context.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 2d8f13a9dbeca7eab9e20fe95aaf7363 + guid: 0cd0157cd6c1fbfcfa5feafb8e822f77 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/canvas.js.meta b/Runtime/wechat-default/unity-sdk/canvas.js.meta index cd2b0a278..6d3eac6df 100644 --- a/Runtime/wechat-default/unity-sdk/canvas.js.meta +++ b/Runtime/wechat-default/unity-sdk/canvas.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 413a48902a2c99154741472fd5f89d1a + guid: e05f5e853f1511feb0c400e1634b18e4 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/chat.js.meta b/Runtime/wechat-default/unity-sdk/chat.js.meta index 30a4271f9..34cc8b230 100644 --- a/Runtime/wechat-default/unity-sdk/chat.js.meta +++ b/Runtime/wechat-default/unity-sdk/chat.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c86b3be554947b7ad72a89bb5a4920bd + guid: f469cc901eeb690928cd7676f74877f5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/cloud.js.meta b/Runtime/wechat-default/unity-sdk/cloud.js.meta index 801b1e2c4..440802e2e 100644 --- a/Runtime/wechat-default/unity-sdk/cloud.js.meta +++ b/Runtime/wechat-default/unity-sdk/cloud.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 81e2c4a262721de36fabc0e3e8636666 + guid: 4a17a447896b8efaa711b039a767bd6a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/conf.js.meta b/Runtime/wechat-default/unity-sdk/conf.js.meta index aa5e9de9c..077142f32 100644 --- a/Runtime/wechat-default/unity-sdk/conf.js.meta +++ b/Runtime/wechat-default/unity-sdk/conf.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: a796bbbfc63077cf9c917378f42cc5ce + guid: c12641be0cc4f6080f3110e488d44be7 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/file-info.js.meta b/Runtime/wechat-default/unity-sdk/file-info.js.meta index 588b02adf..3b47a7932 100644 --- a/Runtime/wechat-default/unity-sdk/file-info.js.meta +++ b/Runtime/wechat-default/unity-sdk/file-info.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 9fed21f35a9be181a00d4e1f48df49d4 + guid: 03c7c81c643803c9ad48e60df0f70da6 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/fix.js.meta b/Runtime/wechat-default/unity-sdk/fix.js.meta index f783ca130..6bca18b1c 100644 --- a/Runtime/wechat-default/unity-sdk/fix.js.meta +++ b/Runtime/wechat-default/unity-sdk/fix.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 55859b2ca9b107764ea697eae3e6f33a + guid: 85782695e6e2df889758aa282ae4a906 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/font.meta b/Runtime/wechat-default/unity-sdk/font.meta index 6c3f7076e..cac19c7ba 100644 --- a/Runtime/wechat-default/unity-sdk/font.meta +++ b/Runtime/wechat-default/unity-sdk/font.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6b4ad72a189d905586c044d29c3cf484 +guid: 48af25b7467a349ddee379dca44f387c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/font/fix-cmap.js.meta b/Runtime/wechat-default/unity-sdk/font/fix-cmap.js.meta index 9b36cdfcd..1f1659cc3 100644 --- a/Runtime/wechat-default/unity-sdk/font/fix-cmap.js.meta +++ b/Runtime/wechat-default/unity-sdk/font/fix-cmap.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 0186d384afa80caf0e51eab25c5b010e + guid: 68d689deca18f6ff3434a725e43455ff DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/font/index.js.meta b/Runtime/wechat-default/unity-sdk/font/index.js.meta index ad332fdda..51153ef7f 100644 --- a/Runtime/wechat-default/unity-sdk/font/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/font/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: e4dc7847e9f58fea1e593ff983f0f359 + guid: e098cd15f2ef7e36b70787fcb00fc0cb DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/font/read-metrics.js.meta b/Runtime/wechat-default/unity-sdk/font/read-metrics.js.meta index f6bba8af9..083fdd49f 100644 --- a/Runtime/wechat-default/unity-sdk/font/read-metrics.js.meta +++ b/Runtime/wechat-default/unity-sdk/font/read-metrics.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: dcdf306b70074dd327165ac845156d73 + guid: 23c31ccc54334c65ebe964da8b46ae4b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/font/split-sc.js.meta b/Runtime/wechat-default/unity-sdk/font/split-sc.js.meta index 3d81b22b6..8473dfb99 100644 --- a/Runtime/wechat-default/unity-sdk/font/split-sc.js.meta +++ b/Runtime/wechat-default/unity-sdk/font/split-sc.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: efb28ec972ad9078ca87cddf5cf95037 + guid: 6b1ea585b0b5a514e1c79ed85a86d0f8 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/font/util.js.meta b/Runtime/wechat-default/unity-sdk/font/util.js.meta index 693261c4f..3c31dd966 100644 --- a/Runtime/wechat-default/unity-sdk/font/util.js.meta +++ b/Runtime/wechat-default/unity-sdk/font/util.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 32b999d9c6c6a3e78a71abd75808cd40 + guid: 7d2c086e9c7411d88da160a7091b298d DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/fs.js.meta b/Runtime/wechat-default/unity-sdk/fs.js.meta index 15023f67b..9d912721d 100644 --- a/Runtime/wechat-default/unity-sdk/fs.js.meta +++ b/Runtime/wechat-default/unity-sdk/fs.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 2690f08b3b083bcc69bfd72d86d61e86 + guid: a69967ab18df5e6c45a822e01a4154b2 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/game-club.js.meta b/Runtime/wechat-default/unity-sdk/game-club.js.meta index 37b493441..3b5bcecce 100644 --- a/Runtime/wechat-default/unity-sdk/game-club.js.meta +++ b/Runtime/wechat-default/unity-sdk/game-club.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 972995c9786a741030857bc9ecc6440f + guid: 433f461919aa854b7ef29d43792a5e46 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/game-recorder.js.meta b/Runtime/wechat-default/unity-sdk/game-recorder.js.meta index 0fac10b46..3479fc044 100644 --- a/Runtime/wechat-default/unity-sdk/game-recorder.js.meta +++ b/Runtime/wechat-default/unity-sdk/game-recorder.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 5764aa6b5049b3c0b2b1b13f0ee16e94 + guid: 0aeaef443262d657e393030dd8c2276e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/gyroscope.meta b/Runtime/wechat-default/unity-sdk/gyroscope.meta index 4b488dfe4..041b54f4f 100644 --- a/Runtime/wechat-default/unity-sdk/gyroscope.meta +++ b/Runtime/wechat-default/unity-sdk/gyroscope.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7f257d8ce4cdba29c20b438fbbaafb2e +guid: a42a28f2989d73762582a2040ad708aa folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/gyroscope/index.js.meta b/Runtime/wechat-default/unity-sdk/gyroscope/index.js.meta index 4d3424a3b..c0ea2f2d9 100644 --- a/Runtime/wechat-default/unity-sdk/gyroscope/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/gyroscope/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 38f16790c9580a28264b8bbb93f61056 + guid: 7ceb463ab51c8854b227af8442b07607 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/index.js.meta b/Runtime/wechat-default/unity-sdk/index.js.meta index 61b7e9557..7f3314a79 100644 --- a/Runtime/wechat-default/unity-sdk/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: e3b3c6dd61d8c57b1734b263a8673ba8 + guid: 340661cbf06df9af943335ae9f254522 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/logger.js.meta b/Runtime/wechat-default/unity-sdk/logger.js.meta index 3ba21280e..f61e18c53 100644 --- a/Runtime/wechat-default/unity-sdk/logger.js.meta +++ b/Runtime/wechat-default/unity-sdk/logger.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 87f83da2d74a47c731c31dd520fee7e8 + guid: 59ead2c11dcceb804d8f9e514f2eb27b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/mobileKeyboard.meta b/Runtime/wechat-default/unity-sdk/mobileKeyboard.meta index 2a4e99f66..f9f0b4b0c 100644 --- a/Runtime/wechat-default/unity-sdk/mobileKeyboard.meta +++ b/Runtime/wechat-default/unity-sdk/mobileKeyboard.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 25b9ac066940849660126f4ab20e4182 +guid: 888156aaf2847fb277546c3e1c58ba6b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/mobileKeyboard/index.js.meta b/Runtime/wechat-default/unity-sdk/mobileKeyboard/index.js.meta index b6c5e7d85..c41f294ce 100644 --- a/Runtime/wechat-default/unity-sdk/mobileKeyboard/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/mobileKeyboard/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 707eedbe7c6973ee2ccfdfb6dd0cec6a + guid: 1f2ce62c6e5bf58edaf7a63baa2c882c DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/module-helper.js.meta b/Runtime/wechat-default/unity-sdk/module-helper.js.meta index 770b6b39e..aa145b022 100644 --- a/Runtime/wechat-default/unity-sdk/module-helper.js.meta +++ b/Runtime/wechat-default/unity-sdk/module-helper.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 6b1d85d81eae9b38e0dd3aa97254f227 + guid: 076f3650096138a18389f8a5a6f08d20 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/open-data.js.meta b/Runtime/wechat-default/unity-sdk/open-data.js.meta index 957ab336b..ada63260e 100644 --- a/Runtime/wechat-default/unity-sdk/open-data.js.meta +++ b/Runtime/wechat-default/unity-sdk/open-data.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: ba989a8c2ef29f95456c9f20c4978eae + guid: 539ee0f330a9279ff3a679a0c35049df DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/recorder.js.meta b/Runtime/wechat-default/unity-sdk/recorder.js.meta index 49a4a3cd4..7db91ef89 100644 --- a/Runtime/wechat-default/unity-sdk/recorder.js.meta +++ b/Runtime/wechat-default/unity-sdk/recorder.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 947f1c70452864cb3b61b43580dc14cf + guid: dd5be962b553fda8c8bb16d71612a3c7 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/resType.js.meta b/Runtime/wechat-default/unity-sdk/resType.js.meta index 05277469b..5b6591831 100644 --- a/Runtime/wechat-default/unity-sdk/resType.js.meta +++ b/Runtime/wechat-default/unity-sdk/resType.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 7902ec18d20301ca3fa2dbfed7792a1c + guid: 86e7d38a2c14d39def7ed3128d36077a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/resTypeOther.js.meta b/Runtime/wechat-default/unity-sdk/resTypeOther.js.meta index 55c59475d..f1ed760d8 100644 --- a/Runtime/wechat-default/unity-sdk/resTypeOther.js.meta +++ b/Runtime/wechat-default/unity-sdk/resTypeOther.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: dec3ce46096de8834db3ed98536e74e1 + guid: 85ef11cfe1833f1bbc710c51dc1aa530 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/response.js.meta b/Runtime/wechat-default/unity-sdk/response.js.meta index 36918d0f8..dc2f519ee 100644 --- a/Runtime/wechat-default/unity-sdk/response.js.meta +++ b/Runtime/wechat-default/unity-sdk/response.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 2c05ae6f9561735272fef3e3f6b4ecc9 + guid: dfde3429a84c45a740eb1df8c67a9c15 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/sdk.js.meta b/Runtime/wechat-default/unity-sdk/sdk.js.meta index 8a4e0cd28..baf9cda81 100644 --- a/Runtime/wechat-default/unity-sdk/sdk.js.meta +++ b/Runtime/wechat-default/unity-sdk/sdk.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 301415e3de7d5406a649871fdfde772a + guid: f14b606dd64bbf068165f16cc31c3c13 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/share.js.meta b/Runtime/wechat-default/unity-sdk/share.js.meta index 89cf8bb33..31e9619f9 100644 --- a/Runtime/wechat-default/unity-sdk/share.js.meta +++ b/Runtime/wechat-default/unity-sdk/share.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: bb97bd028a4d0c712efa2ba280ab24e0 + guid: f95a0aa1dee82d3a27fa5962a3ecacfc DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/storage.js.meta b/Runtime/wechat-default/unity-sdk/storage.js.meta index cd6f28a82..059d1aab8 100644 --- a/Runtime/wechat-default/unity-sdk/storage.js.meta +++ b/Runtime/wechat-default/unity-sdk/storage.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 97cd600b2fb9ef89d94ba7c0274cc490 + guid: 320545468cdc1c01f1ae641395d9f0df DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/texture.js.meta b/Runtime/wechat-default/unity-sdk/texture.js.meta index 15247a7ef..cc9f091d6 100644 --- a/Runtime/wechat-default/unity-sdk/texture.js.meta +++ b/Runtime/wechat-default/unity-sdk/texture.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 8c12a26b5aaf29c9a496493181298ac1 + guid: 6ad88cd6c110f564929dab681febf082 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/touch.meta b/Runtime/wechat-default/unity-sdk/touch.meta index 5e0f63569..00a0ed294 100644 --- a/Runtime/wechat-default/unity-sdk/touch.meta +++ b/Runtime/wechat-default/unity-sdk/touch.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2a527e638944a2c7966cca8f883d97a3 +guid: 8ca25ef00c5e7c72ff51774fff774e67 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/touch/index.js.meta b/Runtime/wechat-default/unity-sdk/touch/index.js.meta index 2a916cd9e..f23c566a6 100644 --- a/Runtime/wechat-default/unity-sdk/touch/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/touch/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: d26931ee77b39d82ac4a590215d2d401 + guid: 774d1674a9bb7b50bb5dcc85a150d464 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/upload-file.js.meta b/Runtime/wechat-default/unity-sdk/upload-file.js.meta index 77eed949a..3edcc4758 100644 --- a/Runtime/wechat-default/unity-sdk/upload-file.js.meta +++ b/Runtime/wechat-default/unity-sdk/upload-file.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 41da85adab1a8375154b0d0cbddcad56 + guid: 23dfd46c5127cb85194d9c281509b698 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/userinfo.js.meta b/Runtime/wechat-default/unity-sdk/userinfo.js.meta index 9b025c9ce..9d1695662 100644 --- a/Runtime/wechat-default/unity-sdk/userinfo.js.meta +++ b/Runtime/wechat-default/unity-sdk/userinfo.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 5290186188fb99f148a0909a6fec0e65 + guid: 2404cee8ce4b7ea992ba97d7f1e5ef18 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/util.js.meta b/Runtime/wechat-default/unity-sdk/util.js.meta index d0b488b4a..8ed40ef01 100644 --- a/Runtime/wechat-default/unity-sdk/util.js.meta +++ b/Runtime/wechat-default/unity-sdk/util.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: bb38d68a06ebcf4f826db14afe5c86a6 + guid: 501f3bc5e9c0c804fd6ca234c08b8ee7 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/utils.js.meta b/Runtime/wechat-default/unity-sdk/utils.js.meta index 699f118d2..f2105e8bd 100644 --- a/Runtime/wechat-default/unity-sdk/utils.js.meta +++ b/Runtime/wechat-default/unity-sdk/utils.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 86115cda650af5a491322811dd151afa + guid: 75ce71ca2abf1dae748c242b402d42e0 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/video.js.meta b/Runtime/wechat-default/unity-sdk/video.js.meta index bae6f763a..061d16e14 100644 --- a/Runtime/wechat-default/unity-sdk/video.js.meta +++ b/Runtime/wechat-default/unity-sdk/video.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: ecdfb9c9c051a9e0327f05b356062db0 + guid: ec29959661d153b9b90b929ddd2d3961 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/video.meta b/Runtime/wechat-default/unity-sdk/video.meta index 9a0f158b8..2bd86b064 100644 --- a/Runtime/wechat-default/unity-sdk/video.meta +++ b/Runtime/wechat-default/unity-sdk/video.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ef797d24859e9a0d7f684b1937e06e3f +guid: 11fd43eb10f2d6c0137632c8572a74c9 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/video/index.js.meta b/Runtime/wechat-default/unity-sdk/video/index.js.meta index 922fdd3fe..0a2b012a8 100644 --- a/Runtime/wechat-default/unity-sdk/video/index.js.meta +++ b/Runtime/wechat-default/unity-sdk/video/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 5d8f555bce860047602ef541b6c5063b + guid: cb789d8b2e8b275bfe6fec3cdc5d60b5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/wasmcode.meta b/Runtime/wechat-default/wasmcode.meta index 385051c8f..f5329cd80 100644 --- a/Runtime/wechat-default/wasmcode.meta +++ b/Runtime/wechat-default/wasmcode.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 35a601e53c9e15487be956df49fbb317 +guid: 1cc42d7e88dd402880c51dfa58ce39bd folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/wasmcode/game.js.meta b/Runtime/wechat-default/wasmcode/game.js.meta index 3e997cd8b..e00447d16 100644 --- a/Runtime/wechat-default/wasmcode/game.js.meta +++ b/Runtime/wechat-default/wasmcode/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 801f369a209b7c5cd65e0ab77059cdcf + guid: 09d04204c56a7166df0c861c9bdd5991 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/weapp-adapter.js.meta b/Runtime/wechat-default/weapp-adapter.js.meta index f5e4fc61e..9a543f2ce 100644 --- a/Runtime/wechat-default/weapp-adapter.js.meta +++ b/Runtime/wechat-default/weapp-adapter.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: a2c66f789f28151d12999baaa3bdaeb5 + guid: 606d7b2fc0da8f03ee8b71826d6d9242 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/workers.meta b/Runtime/wechat-default/workers.meta index afb4062c3..101a797dc 100644 --- a/Runtime/wechat-default/workers.meta +++ b/Runtime/wechat-default/workers.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3e862c14cabeade40e53ac32d5011a75 +guid: f3dc51e86e1a6483cacd639d1628715b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/workers/response.meta b/Runtime/wechat-default/workers/response.meta index 239f34c0b..586d608e8 100644 --- a/Runtime/wechat-default/workers/response.meta +++ b/Runtime/wechat-default/workers/response.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fd93c94282bbc01d424b2680fb68be66 +guid: 2deaee41aeb80197c87d8b084e1a5abb folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/workers/response/index.js.meta b/Runtime/wechat-default/workers/response/index.js.meta index 24f55df69..67215df9c 100644 --- a/Runtime/wechat-default/workers/response/index.js.meta +++ b/Runtime/wechat-default/workers/response/index.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: edcb4e85d6566bdaa4c8b83ba9ac2ad9 + guid: 7ce8c85b9463e8d2e56eb7319bd2944d DefaultImporter: externalObjects: {} userData: diff --git a/package.json b/package.json index 496db7a3d..650163cc4 100644 --- a/package.json +++ b/package.json @@ -1 +1,14 @@ -{"name":"com.qq.weixin.minigame","displayName":"WXSDK","description":"WeChat Mini Game Tuanjie Engine Adapter SDK Package.","version":"0.1.32","unity":"2019.4","unityRelease":"29f1","keywords":["Tuanjie","WX"],"dependencies":{}} +{ + "name": "com.qq.weixin.minigame", + "displayName": "WXSDK", + "description": "WeChat Mini Game Tuanjie Engine Adapter SDK Package.", + "version": "0.1.1", + "unity": "2019.4", + "unityRelease": "29f1", + "keywords": [ + "Tuanjie", + "WX" + ], + "dependencies": { + } +} \ No newline at end of file