From dd763bcb0601e0b5038f0505104c25bb820b729e Mon Sep 17 00:00:00 2001 From: nebulaliu Date: Thu, 2 Apr 2026 17:16:23 +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..6c2e952b1 --- /dev/null +++ b/Editor/PCHighPerformance/WXPCHPWindow.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a3e8e576b56fc74b9401b1ef3cd42e06 +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..cc45412e0 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 = "202604020915"; // 这一行不要改他,导出的时候会自动替换 } public class WXPluginConf diff --git a/Editor/wx-editor.dll b/Editor/wx-editor.dll index 4443e0e0d886bd50d8a7e064c9879e97cdf53277..2b41f8d3889edb4e5f56bd25b071956cd0ee49a2 100644 GIT binary patch delta 54763 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 + +

+ 是否开启PC高性能模式 + + 自动将图片尺寸减小一半 diff --git a/Editor/wx-editor.xml.meta b/Editor/wx-editor.xml.meta index a1b05c6cb..cb46c4192 100644 --- a/Editor/wx-editor.xml.meta +++ b/Editor/wx-editor.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7330c57dbe403f6a6825fe311f4436ca +guid: 0f3c8e4abc7778dcf7afb3f801eedac6 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/Plugins/wx-perf.dll b/Runtime/Plugins/wx-perf.dll index 5320d0af31869643da3fd2279123fd543b6fd455..c4829ebb7cb96f9bfd0d485ceadc9759a007dd34 100644 GIT binary patch delta 38 wcmV+>0NMY5v;%;&1CWRVt255Ai=o624tD+UdM`Rey3}pb6O3EYvpmJb6ko~`qW}N^ delta 38 wcmV+>0NMY5v;%;&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..216cc8b860052f691ce516191d43e62c65d7042a 100644 GIT binary patch delta 201 zcmZp8A<*zbU_uA;3gdH)-CMgEYi}{SZ|A(txX_3_i}3-IFhkDvjl4|18yWMqukB~L z*P-EN=HhDUXy&NvW?|v1YvN{Pq-$wn?51n#=Ird`Y-r%*Y-z$^%3!vAvjp>-Ju0ro zuC5l&mS(yx2F^~pCZ?uFx)x?8=DHS+u12nomTm@aPEOMgUu9ObAVy^^0|Ucr!NnIM W=KOZ=;Vzg_BKbRJyUaD_C$RvugFiz6 delta 201 zcmZp8A<*zbU_uA8K+*Qb?ycR7wYM0(w{zZRTxi7Z%J_gun8AJfMqZ}hjf|e#*Y-2r z>(DS|Fk^7Fa5OeHHnh-nGqQBjHF0ut)^##9FxGW;GB14CUyS7TRQ6H6mwT?;1@XI%?t3llRJ7ef + /// 获取 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..24e6ecc12 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: 4d94f319aa622b03849c8e69a8c7cba9 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/data-package.meta b/Runtime/playable-default/data-package.meta index fb95538b9..75978d94a 100644 --- a/Runtime/playable-default/data-package.meta +++ b/Runtime/playable-default/data-package.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6c06693e00be3ab1fde2607590ab4e6d +guid: d2fcde627429d4818f85e18d2a1263f9 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..b7da6d0d0 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: b2af85219bfaf6a05bd3bd6bc6d03829 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/events.js.meta b/Runtime/playable-default/events.js.meta index 0481ed41a..85ee7cc45 100644 --- a/Runtime/playable-default/events.js.meta +++ b/Runtime/playable-default/events.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: de11e750d070e1521430f1ea7d7e9b10 + guid: bdf3bca45f7097b129e204847282cd24 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/game.js.meta b/Runtime/playable-default/game.js.meta index 4b92cef81..fbe52d73b 100644 --- a/Runtime/playable-default/game.js.meta +++ b/Runtime/playable-default/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 75c495849e8b58894c4df4019c28990f + guid: 82604dd9fc856ac2a8ba9c065b3f0f74 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/game.json.meta b/Runtime/playable-default/game.json.meta index eb5ec6a81..a68b0b68f 100644 --- a/Runtime/playable-default/game.json.meta +++ b/Runtime/playable-default/game.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 2676c806e8720f27b3c91d7b88934aea + guid: 848a462a23628985852dc620380dc698 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/playable-fix.js.meta b/Runtime/playable-default/playable-fix.js.meta index 53c145c8e..3e9bdd504 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: 1cd8e103dc8cb7c406056cbc19a0da7e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/plugin-config.js.meta b/Runtime/playable-default/plugin-config.js.meta index 08bed247a..e3acc1030 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: 6852f18e86c0b0f9d687cd12e757be11 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/plugins.meta b/Runtime/playable-default/plugins.meta index b3393336c..9a039b8a4 100644 --- a/Runtime/playable-default/plugins.meta +++ b/Runtime/playable-default/plugins.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fdc5a07bfe255668c4bc90b063ab0439 +guid: 92e78cafb9ee3bb507bb5f1d2d464323 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..40d60dfc2 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: 6f8a3fb7d545a9c2f4cb6d3c911e01f8 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..3a5a5fb37 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: 900b8f09ecdfa2e72a70b84c1eebb774 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/project.config.json.meta b/Runtime/playable-default/project.config.json.meta index c0d720d1c..a00ba9dc0 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: 6755f00877ecd893631231910933d4ed DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/texture-config.js.meta b/Runtime/playable-default/texture-config.js.meta index 2bbf5fa16..41c529d98 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: 27270731c7e1bdae791f9a891df08bca DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-namespace.js.meta b/Runtime/playable-default/unity-namespace.js.meta index 2945472bd..537e0d484 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: 05dff728b56a6788b0002a35db638ab3 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-playable-plugin.meta b/Runtime/playable-default/unity-playable-plugin.meta index d18d1f76d..fb468a41d 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: 94baa1b07b72979942f824d3fa4316b8 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..22bb306be 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: 33aecb9421d7577bff6a9cee399fc62f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk.meta b/Runtime/playable-default/unity-sdk.meta index e69020b1b..71d4fd58c 100644 --- a/Runtime/playable-default/unity-sdk.meta +++ b/Runtime/playable-default/unity-sdk.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b193152a2bbc37d0feda3c6544e7afc8 +guid: c09a5b303d2369195c430976d5111957 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/unity-sdk/audio.meta b/Runtime/playable-default/unity-sdk/audio.meta index f4c7747ef..807751870 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: 94afe4cf34619ee7284672597deadbdb 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..357ec6481 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: f9f0235dd51f1b0c9efca63315546955 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..0000c681a 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: b7d881fe3f7853c0fc3b0372496327ec 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..424b0b811 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: 85bc5ab7146f11bd3745c05213267810 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..09fd1d6f0 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: c63d44cff96fed99b29285d650215e5b 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..8b9c64925 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: 748964f432130d20018c31e8ccf94765 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..1219c0d81 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: 669b1053fadcb602f4808ba75e5cb3eb 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..b2b378207 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: 132bf65501259226e755ef658860ce7c 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..66ce3bfad 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: f2e77f03fa4132105e406e7b4e920986 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..1deee7c46 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: cfd0447c19143ba4c424d510171c4749 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..2a6083f59 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: de5d6956a4f8c950b00f2975a06c31b8 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..3fd2d89ea 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: 4cd850965eb65ecb2add3c82a65c7636 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..2ce81ebd4 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: 3b95c88fdcefc84eff7698ef331072d5 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..d5e0e7d3c 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: 1599136c65ba399a0736ed477cd3f9be 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..0c1961fd0 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: 465f79e042f08f54238942e70a8ed88e 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..dd81d68d4 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: cce28cd7abeb995a7ba56195e81169ba DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/mobileKeyboard.meta b/Runtime/playable-default/unity-sdk/mobileKeyboard.meta index af2d906db..11e94aa8e 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: 5359d80250e657a8a992b76900a885f9 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..25421b736 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: b79c7144b7ef9c8be6c4acb2a21c1c1d 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..b6f2dd131 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: d07f88297badc254af33d46394906cda 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..f5373a1bd 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: dd6f9000617f9b2eca85bc6d599f1dd9 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..d74fd266e 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: f6327ad840f6a9069dd66ae83074db0b 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..e933526c9 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: b7bf48e81d891374a332b739fd1c40f7 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..c826f242b 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: 741288a35af3a4b2c223537a51b417a6 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..545c5cb55 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: 80c89ead5349646ae66ee700308752a5 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..57e1ddb72 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: b1460f620a984af813434501139116dc 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..2af9be143 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: 76b847977e20e6da3636dbc85053ad63 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/touch.meta b/Runtime/playable-default/unity-sdk/touch.meta index b3ce6d8cc..b684c6e8c 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: 4c6345b052ef553a44d6ac3caa7f728b 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..cb2a90bc2 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: 0fca09d72894fe57b36058f861fc0358 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..1704e290a 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: 21ce6c9ad9c1f25f1edabfca8fdd815e 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..64f8c5187 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: 02d787436f30a761a6576c6ac6342009 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..cd5a838e1 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: fc7566ad1398845fc6a2e47416b0d8a8 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/video.meta b/Runtime/playable-default/unity-sdk/video.meta index f65da60aa..538de2bc0 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: baa810234733b35571eae2421bbf9827 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..01382a6df 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: 6d4e09752bc145ec949170babf1e3ad6 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/wasmcode.meta b/Runtime/playable-default/wasmcode.meta index ba0aa256d..742b5bca6 100644 --- a/Runtime/playable-default/wasmcode.meta +++ b/Runtime/playable-default/wasmcode.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 47d2bb9aac0b87cfdf12358dc192e755 +guid: 6776648588f5283cef236aab3010cc97 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/wasmcode/game.js.meta b/Runtime/playable-default/wasmcode/game.js.meta index 11e065318..14bcb8dd7 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: d3bf5af8a6c0a24dbe3f005cae269b3f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/weapp-adapter.js.meta b/Runtime/playable-default/weapp-adapter.js.meta index 04b3af04a..b36d7e760 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: 57fd82a56e3a9dba280254cacafb06c1 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/check-version.js.meta b/Runtime/wechat-default/check-version.js.meta index 69124942e..fb6ea64c4 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: edf0a9a1546e0e70e1d8f3ccf6ce3f83 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/data-package.meta b/Runtime/wechat-default/data-package.meta index a2d178242..b2c19ee19 100644 --- a/Runtime/wechat-default/data-package.meta +++ b/Runtime/wechat-default/data-package.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 873c3ff5c09c499cea533e76613b289c +guid: dae4cb4ecc6068f06c542ff84c6bd0e7 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..5cbcf0ffc 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: 2c0452e405b404a968d147b3853d9427 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/events.js.meta b/Runtime/wechat-default/events.js.meta index e2aba010f..7bf94047a 100644 --- a/Runtime/wechat-default/events.js.meta +++ b/Runtime/wechat-default/events.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 0f5d268ad00ae324c34a888a2bc0f3b9 + guid: 9fb16bd225561e6021d61508ac89f731 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/game.js.meta b/Runtime/wechat-default/game.js.meta index 88a17a104..c80e9823f 100644 --- a/Runtime/wechat-default/game.js.meta +++ b/Runtime/wechat-default/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c4b7634dc3628a25ae87b92a174f5056 + guid: e9b49edc671d3713d68f76cca4583f2b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/game.json.meta b/Runtime/wechat-default/game.json.meta index 71ff9558f..4823b920b 100644 --- a/Runtime/wechat-default/game.json.meta +++ b/Runtime/wechat-default/game.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: acc81d1c264bc0dadd4552d59e6b5cc0 + guid: 4e16ff1a8624dff18d20295a4e8d4441 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/images.meta b/Runtime/wechat-default/images.meta index a759e39d2..17cfb15c4 100644 --- a/Runtime/wechat-default/images.meta +++ b/Runtime/wechat-default/images.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 304fa8442a722ea29aaf75c80ecf36d0 +guid: 753e849f445689c7a3b964b271405451 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/images/background.jpg.meta b/Runtime/wechat-default/images/background.jpg.meta index 84907c342..c6c5de27e 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: 58e440fe59f49a8b4d50db4b4d66803c 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..e3a08f6b1 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: c3cee16857cb4ecf47b34993780c7854 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data.meta b/Runtime/wechat-default/open-data.meta index 407e58d88..668e135cd 100644 --- a/Runtime/wechat-default/open-data.meta +++ b/Runtime/wechat-default/open-data.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f54994eb4369a71edd1d509002ad2f14 +guid: 19fdc70a4fb20e875bb2d97a0c593225 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/open-data/data.meta b/Runtime/wechat-default/open-data/data.meta index 8b4d35470..d4ac32e99 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: 9795cee09e7fb8721ded3f3bc9731fd7 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..7194b069d 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: c1c2d57b345ad7106801b4a82839f91c 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..93ac96703 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: 453707e476646856dd5bd0e66137166c 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..513ff9415 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: 272557131fc9049c4239ad3a9692462d 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..232743ca9 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: 9e4d2ace703f22091167280977581e33 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render.meta b/Runtime/wechat-default/open-data/render.meta index f38c2a239..3130463d5 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: fd4d798f8f8c23f76172ae483a36cf71 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..e393489d4 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: 21b143cea670ce892f9d285c056a6136 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..b8c0e8ef4 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: 33c723c5dfb6e5dd50ef97273ace5fc9 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..b34e59264 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: 31d270a90d730e386bb83a81aacae398 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..b047cbe02 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: 5145382ec9f44fd2685eed8c7a41330d 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..79a299818 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: 51122850591c3b6bbb3539758424008e 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..8c48415d3 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: 6c1962cc2a1d7fc136c4260c175bd5cc 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..0fbb9e870 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: 0d8e3b3e06a076b1e98a9b9c04029028 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..f6ad5ca46 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: 060ec75eb840f1a78fcd772bbeeb0920 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..a1a11bc1a 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: 762b4822bbcbc0ce54c72022c373c568 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..ae54154e5 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: ed94e81a5e7e3d4dde5f5c0f9de0e881 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..05980258b 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: 2f11726c21d6bdd1cb5b3a72b583a3fc 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..88388c195 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: 178b8e93dec252a3ccc82714264f88f5 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..d1d445c63 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: 69153dbc7179ce029da32bcd58ced069 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..8de329b95 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: a07253156709799c32dd1b2719a1da0b 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..ceae656b9 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: 05a24460db7e3d42ec790884d16d0a9a 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..2974e4ad1 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: 37c18b3d0ec06e8887dfdc64be661d9d 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..7ff25c187 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: 203689f1cc3d1b9f11af1ce66a2fb381 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/plugin-config.js.meta b/Runtime/wechat-default/plugin-config.js.meta index 3f17ab3a7..15466f2d6 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: ae3bbb3b1b5d961b08b8bc1ce8a9b62e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/plugins.meta b/Runtime/wechat-default/plugins.meta index fc981b2a9..aba50cffa 100644 --- a/Runtime/wechat-default/plugins.meta +++ b/Runtime/wechat-default/plugins.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6a74b91bbf9d4d98c4fff2ffab7a52c9 +guid: b08803aa2acc87ef0974e14d628849ad 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..93c32dca2 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: 51d59aedbccf6a281c949873c7ac4542 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..ac269bcab 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: e7456e27abf74c2c30101cf5c05d752a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/project.config.json.meta b/Runtime/wechat-default/project.config.json.meta index e49b727e1..5103af614 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: 6c66724e11a8888905545bbb3c3ea563 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/texture-config.js.meta b/Runtime/wechat-default/texture-config.js.meta index 287bac263..34a948de9 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: 23d873976aa461a03306ce970912c2c6 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-namespace.js.meta b/Runtime/wechat-default/unity-namespace.js.meta index 2b1180e8d..1e79fc695 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: 7f36c06a0438761c4ded30b64f13d09b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk.meta b/Runtime/wechat-default/unity-sdk.meta index 15cc2d141..2357ffdcc 100644 --- a/Runtime/wechat-default/unity-sdk.meta +++ b/Runtime/wechat-default/unity-sdk.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f5411f494113c860af36d9dc677da755 +guid: c84f07836c0bdbfe3e2ae6b1582f4857 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/TCPSocket.meta b/Runtime/wechat-default/unity-sdk/TCPSocket.meta index cfd10c115..90120c57c 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: d993d0189c123c117bf5ca3557d047b5 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..beebb7fcc 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: d59fddcd7bdd5b35c8af0912870b8c28 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/UDPSocket.meta b/Runtime/wechat-default/unity-sdk/UDPSocket.meta index 56dd83b4c..e6c076371 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: 09dc4f11f2175a9ce848cb6c315229ad 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..5fe843a74 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: a508023b0ba811029f3939e14db0c9aa 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..499a74162 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: ad4f550636b256d85414a2561fe8a986 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio.meta b/Runtime/wechat-default/unity-sdk/audio.meta index cfb18e7e4..509b6f615 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: 6b3167b1ecf4c1c0ccc5c8bda8c227a9 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..9b7a84550 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: 4f4cfe1382cb2922cb3de723b4b5183f 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..fdbee4985 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: 43d33daffc3d97b9ce5a66f9db045bfe 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..6ab3abfcb 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: 0ce9692ebfa3830cf8fa8488c67d0fa7 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..b4de7504b 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: 14f209b9e82f2b20f18252e616c10097 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..b401b0485 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: 388ae170ca6148de663261cba621472d 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..b3987e958 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: e3f04cb8bb4873b65468a3ffb8a3f638 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..33fd48abd 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: f06f89f3c91ccf3357fd1addd9dc3f9b 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..780dda7de 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: 951d9d20d103ec5328940f9d407d98c2 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/bluetooth.meta b/Runtime/wechat-default/unity-sdk/bluetooth.meta index 2830c2a0d..54841fbcc 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: 9b8f21cbd42a4698dfc36d364779f640 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..783b2f9c5 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: b0175c0016d81da4e4952de3ecbaa4fa 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..dfd21f757 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: 738a5887763cd35a646bf18e25b128a6 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..488c5a134 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: d4e7b0ca49f910124b9cfc179f5f3a9d 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..f666a388d 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: 73cbf21f3cb3d94c3dd2cd24b4cf1f04 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..c216b64db 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: e30f9ecad21c612a1c287572e71aa8e6 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..20c7dad1b 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: 94ea37d34b4ecddf97d2f3b1fd4102c0 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..c98af7db5 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: 1c2075e0d028b71107141d49a046ce52 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..e90ac968e 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: 546202a17b6d24802ef9cbaba54681cb 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..af635815f 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: 1ab737144503621060c0df9ff2510af0 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/font.meta b/Runtime/wechat-default/unity-sdk/font.meta index 6c3f7076e..e1539dcf0 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: 912a06cafe503e02ebfc466a51b69d86 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..9e17ffdae 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: 1c071f9742878fe2bc3d81df27d40c0a 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..690bf9d17 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: 17869ce72df2a7519f2da8833ff5f77c 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..9128f6c48 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: f1b25b9caf73f6c5e0ea0c9d4bbd7586 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..cd37c3eae 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: 56bf31e55c8721ab7a3fa380f93f22ec 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..17cc705fc 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: 941a2005ad86bc21eb334cfba6fd7a3c 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..1c544face 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: 8b42785c94bf1002c9130b82efc9f5fd 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..59bf32133 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: 61d85f721037fb9a1c16abce9dcefcc4 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..1610bf5dd 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: ddec60ebda0dbf054b81b139eb9a8a2c DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/gyroscope.meta b/Runtime/wechat-default/unity-sdk/gyroscope.meta index 4b488dfe4..d5ae932d9 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: 2ef6cad602e649a493fedd94c2ed6638 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..cce8df664 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: 7634659522965c10fc92ebe1241b7f2e 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..36c79e307 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: 4cac03ff391f1b5939b738e2d656985c 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..d4fb355a5 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: 19f9bd635890c3d5ba7e86aeae2c65be DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/mobileKeyboard.meta b/Runtime/wechat-default/unity-sdk/mobileKeyboard.meta index 2a4e99f66..761dce9f2 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: 4514fe41ba3ab05e0a23d88dd7526e6f 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..ef4775a78 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: 5cb13844bdb2dab461d70ace1600ed10 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..9c7b1fa9e 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: 1d302af63046283ec96c14c385ffd1c3 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..58e0a857d 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: df49700618e7784605421e29cbd7889a 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..c91913f06 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: a5aaa7231f4c2f8b10808613439c765c 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..71f0343ac 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: 379ec86ce3bde288da36699f8f9bcfe3 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..b046fdfe3 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: 75d3550cda7c239a479b8f7e2fdda0d4 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..5e625d043 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: 41a82244dc98ac1b993ec39637026f4e 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..d99f188ca 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: b21500e59150ae3557c08fdcd6da59e2 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..ef5da377f 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: dcfa14b4e657de154eb2c3b9f512a6e8 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..a78964a48 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: 08f199531ebddd6f2a128bbe6dbb36f8 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..492f1674f 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: 020a432c58db9e35baef22183b527167 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/touch.meta b/Runtime/wechat-default/unity-sdk/touch.meta index 5e0f63569..bf72d5ad6 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: 96dd9ce39e46d6cb69835da983145d1f 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..6d9fa50ff 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: 99e21e3134b378927f6f6cf2e1737e0e 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..410ce3cf4 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: 024edf9f3eba60944b9846c1ea6b6faa 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..459ff9cd9 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: aa0a16e33ec90910f19debb10aa5e55b 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..7ca12e4bc 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: 700a0118df3628795644cff3283415a0 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..f2157a5a1 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: 748ad4893b7c5bdae71d5818bd62bf83 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..d8ee82e5d 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: 509fd7dc813b29a16a7a72d18bf88187 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/video.meta b/Runtime/wechat-default/unity-sdk/video.meta index 9a0f158b8..e508946e7 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: 872c0c2080e5e9e003fdcca8f4df06d2 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..ca73cda00 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: bc717c4fad109487c595ee786333f19a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/wasmcode.meta b/Runtime/wechat-default/wasmcode.meta index 385051c8f..aec16d344 100644 --- a/Runtime/wechat-default/wasmcode.meta +++ b/Runtime/wechat-default/wasmcode.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 35a601e53c9e15487be956df49fbb317 +guid: 817b6993b4fbd876acd93af2e22a0c17 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/wasmcode/game.js.meta b/Runtime/wechat-default/wasmcode/game.js.meta index 3e997cd8b..2a6c1e123 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: ccebb7c6b3fbddc7239119f858ef5d3d DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/weapp-adapter.js.meta b/Runtime/wechat-default/weapp-adapter.js.meta index f5e4fc61e..86f0cd39a 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: 011960300bb9838aaa46ff2057ed21cc DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/workers.meta b/Runtime/wechat-default/workers.meta index afb4062c3..fc57dc915 100644 --- a/Runtime/wechat-default/workers.meta +++ b/Runtime/wechat-default/workers.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3e862c14cabeade40e53ac32d5011a75 +guid: 1711789ce25ad0f39cdfe38ec495d2dc folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/workers/response.meta b/Runtime/wechat-default/workers/response.meta index 239f34c0b..621dddeb2 100644 --- a/Runtime/wechat-default/workers/response.meta +++ b/Runtime/wechat-default/workers/response.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fd93c94282bbc01d424b2680fb68be66 +guid: 06895ab47c0e1d4a002bf30c39f1413a 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..10d8c5bda 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: 9797f3cdd80e236b77a564b8e856baab 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