From d37d6d86088dc7316c8cd5b9e79aeb5db1f7313c Mon Sep 17 00:00:00 2001 From: nebulaliu Date: Wed, 25 Mar 2026 11:24: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 | 349 +++++++ .../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 | 18 + Editor/WXEditorSettingHelper.cs | 26 + Editor/WXPluginVersion.cs | 2 +- Editor/wx-editor.dll | Bin 246272 -> 246272 bytes Editor/wx-editor.xml | 5 + Editor/wx-editor.xml.meta | 2 +- Runtime/Examples.meta | 8 + Runtime/Examples/PCHPTestExample.cs | 257 +++++ Runtime/Examples/PCHPTestExample.cs.meta | 7 + 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 +- 191 files changed, 3137 insertions(+), 166 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/Examples.meta create mode 100644 Runtime/Examples/PCHPTestExample.cs create mode 100644 Runtime/Examples/PCHPTestExample.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..adba7733d --- /dev/null +++ b/Editor/PCHighPerformance/WXApkgPacker.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c5e90582a5951eff22c3b110229de415 +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..f2f4d2af9 --- /dev/null +++ b/Editor/PCHighPerformance/WXPCHPBuildHelper.cs @@ -0,0 +1,349 @@ +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 + /// + /// 激活微信小游戏子平台(通过反射调用,避免编译期对 MiniGameSubplatform 枚举的硬依赖) + /// + private static void ActivateWeixinSubplatform() + { + try + { + // 通过反射查找 MiniGameSubplatform 枚举类型和 SetActiveSubplatform 方法 + // 因为 MiniGameSubplatform 可能在不同团结版本中命名空间不同 + var miniGameType = typeof(PlayerSettings).GetNestedType("MiniGame"); + if (miniGameType == null) + { + Debug.LogWarning("[PC高性能模式] 未找到 PlayerSettings.MiniGame 类型,跳过子平台激活"); + return; + } + + var setActiveMethod = miniGameType.GetMethod("SetActiveSubplatform", + System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + if (setActiveMethod == null) + { + Debug.LogWarning("[PC高性能模式] 未找到 SetActiveSubplatform 方法,跳过子平台激活"); + return; + } + + // 查找 MiniGameSubplatform 枚举 + System.Type subplatformEnumType = null; + foreach (var asm in System.AppDomain.CurrentDomain.GetAssemblies()) + { + subplatformEnumType = asm.GetType("MiniGameSubplatform") ?? asm.GetType("UnityEditor.MiniGameSubplatform"); + if (subplatformEnumType != null) break; + } + + if (subplatformEnumType == null) + { + Debug.LogWarning("[PC高性能模式] 未找到 MiniGameSubplatform 枚举类型,跳过子平台激活"); + return; + } + + var wechatValue = System.Enum.Parse(subplatformEnumType, "WeChat"); + setActiveMethod.Invoke(null, new object[] { wechatValue, true }); + Debug.Log("[PC高性能模式] 已激活微信小游戏子平台"); + } + 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..8678332a2 --- /dev/null +++ b/Editor/PCHighPerformance/WXPCHPWindow.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1f0df5132a2e6c4a2e5541e3472a6422 +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..e4e0f6db0 100644 --- a/Editor/WXConvertCore.cs +++ b/Editor/WXConvertCore.cs @@ -273,6 +273,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..cd45f7113 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) { @@ -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..1f5252dde 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 = "202603250323"; // 这一行不要改他,导出的时候会自动替换 } public class WXPluginConf diff --git a/Editor/wx-editor.dll b/Editor/wx-editor.dll index 4443e0e0d886bd50d8a7e064c9879e97cdf53277..0e76bf0ece00701ac0caa76dbe219016177607fc 100644 GIT binary patch delta 54750 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

5W-2U)c?1p9v*zc!br{fUdH5ka8A*)J3*M> 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 QrtF5mJ;r&pJiYUO0BUr$y#N3J delta 55246 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 ke`ry{UZ468?c7sYYTuTiJ=)KjnpM!^*r#0 + +

+ 是否开启PC高性能模式 + + 自动将图片尺寸减小一半 diff --git a/Editor/wx-editor.xml.meta b/Editor/wx-editor.xml.meta index a1b05c6cb..66a6377b4 100644 --- a/Editor/wx-editor.xml.meta +++ b/Editor/wx-editor.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7330c57dbe403f6a6825fe311f4436ca +guid: fc63c7c713805714b1dd0992ae9dcff2 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/Examples.meta b/Runtime/Examples.meta new file mode 100644 index 000000000..6d72c5b19 --- /dev/null +++ b/Runtime/Examples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b8fdca948fd6a64887c0534f384f283f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: \ No newline at end of file diff --git a/Runtime/Examples/PCHPTestExample.cs b/Runtime/Examples/PCHPTestExample.cs new file mode 100644 index 000000000..2c8dfcc56 --- /dev/null +++ b/Runtime/Examples/PCHPTestExample.cs @@ -0,0 +1,257 @@ +using UnityEngine; +using WeChatWASM; + +namespace WeChatWASM.Examples +{ + /// + /// PC高性能小游戏通信测试示例 + /// + /// 通信链路: + /// 1. C# 调用 ShowToast + /// 2. WXPCHPInitScript.CallWXAPI 构建 PCHPRequestMessage + /// 3. SendMsgAsync -> direct_applet_sdk.dll -> 内核 + /// 4. 内核 -> 基础库 pc-adapter -> game.js + /// 5. game.js 执行 wx.showToast + /// 6. 回调 -> 基础库 -> 内核 -> DLL -> HandleAsyncMessage + /// 7. 解析 PCHPResponseMessage -> 触发 C# 回调 + /// + public class PCHPTestExample : MonoBehaviour + { + private WXPCHighPerformanceManager _pcManager; + + private void Start() + { + Debug.Log("[PCHPTestExample] Start - 获取 PC 高性能管理器"); + +#if UNITY_STANDALONE_WIN + _pcManager = WXPCHighPerformanceManager.GetInstance(); + + if (_pcManager != null && _pcManager.IsSupported) + { + Debug.Log("[PCHPTestExample] PC 高性能模式已支持!"); + } + else + { + Debug.LogWarning("[PCHPTestExample] PC 高性能模式不可用"); + } +#else + Debug.Log("[PCHPTestExample] 当前平台非 Windows,PC 高性能模式不可用"); +#endif + } + + /// + /// 测试 ShowToast - 在 Inspector 中调用或通过 UI 按钮调用 + /// + [ContextMenu("Test ShowToast")] + public void TestShowToast() + { + if (_pcManager == null || !_pcManager.IsSupported) + { + Debug.LogError("[PCHPTestExample] PC 高性能模式不可用"); + return; + } + + Debug.Log("[PCHPTestExample] 调用 ShowToast..."); + + _pcManager.ShowToast( + new PCHPShowToastOption + { + title = "Hello from Unity!", + icon = "success", + duration = 2000, + mask = false + }, + success: (res) => + { + Debug.Log($"[PCHPTestExample] ShowToast 成功: {res.errMsg}"); + }, + fail: (res) => + { + Debug.LogError($"[PCHPTestExample] ShowToast 失败: {res.errMsg}"); + }, + complete: (res) => + { + Debug.Log($"[PCHPTestExample] ShowToast 完成"); + } + ); + } + + /// + /// 测试 ShowModal - 在 Inspector 中调用或通过 UI 按钮调用 + /// + [ContextMenu("Test ShowModal")] + public void TestShowModal() + { + if (_pcManager == null || !_pcManager.IsSupported) + { + Debug.LogError("[PCHPTestExample] PC 高性能模式不可用"); + return; + } + + Debug.Log("[PCHPTestExample] 调用 ShowModal..."); + + _pcManager.ShowModal( + new PCHPShowModalOption + { + title = "提示", + content = "这是一个来自 Unity 的模态框测试", + showCancel = true, + cancelText = "取消", + confirmText = "确定" + }, + success: (res) => + { + if (res.confirm) + { + Debug.Log("[PCHPTestExample] 用户点击了确定"); + } + else if (res.cancel) + { + Debug.Log("[PCHPTestExample] 用户点击了取消"); + } + }, + fail: (res) => + { + Debug.LogError($"[PCHPTestExample] ShowModal 失败: {res.errMsg}"); + }, + complete: (res) => + { + Debug.Log($"[PCHPTestExample] ShowModal 完成"); + } + ); + } + + /// + /// 测试 ShowLoading - 在 Inspector 中调用或通过 UI 按钮调用 + /// + [ContextMenu("Test ShowLoading")] + public void TestShowLoading() + { + if (_pcManager == null || !_pcManager.IsSupported) + { + Debug.LogError("[PCHPTestExample] PC 高性能模式不可用"); + return; + } + + Debug.Log("[PCHPTestExample] 调用 ShowLoading..."); + + _pcManager.ShowLoading("加载中...", true, + success: (res) => + { + Debug.Log($"[PCHPTestExample] ShowLoading 成功"); + + // 2秒后隐藏 + StartCoroutine(HideLoadingAfterDelay(2f)); + }, + fail: (res) => + { + Debug.LogError($"[PCHPTestExample] ShowLoading 失败: {res.errMsg}"); + } + ); + } + + private System.Collections.IEnumerator HideLoadingAfterDelay(float delay) + { + yield return new WaitForSeconds(delay); + + _pcManager?.HideLoading( + success: (res) => + { + Debug.Log("[PCHPTestExample] HideLoading 成功"); + } + ); + } + + /// + /// 测试通用 API 调用 + /// + [ContextMenu("Test Generic API Call")] + public void TestGenericAPICall() + { + if (_pcManager == null || !_pcManager.IsSupported) + { + Debug.LogError("[PCHPTestExample] PC 高性能模式不可用"); + return; + } + + Debug.Log("[PCHPTestExample] 调用通用 API (getSystemInfoSync)..."); + + // 示例:调用任意 wx API + _pcManager.CallWXAPI( + "getSystemInfo", + new { }, // 无参数 + onSuccess: (res) => + { + Debug.Log($"[PCHPTestExample] getSystemInfo 成功: {res}"); + }, + onFail: (res) => + { + Debug.LogError($"[PCHPTestExample] getSystemInfo 失败: {res}"); + }, + onComplete: (res) => + { + Debug.Log("[PCHPTestExample] getSystemInfo 完成"); + } + ); + } + + /// + /// 测试事件监听 + /// + [ContextMenu("Test Event Listener")] + public void TestEventListener() + { + if (_pcManager == null || !_pcManager.IsSupported) + { + Debug.LogError("[PCHPTestExample] PC 高性能模式不可用"); + return; + } + + Debug.Log("[PCHPTestExample] 注册 onShow 事件监听..."); + + _pcManager.On("onShow", (data) => + { + Debug.Log($"[PCHPTestExample] 收到 onShow 事件: {data}"); + }); + + _pcManager.On("onHide", (data) => + { + Debug.Log($"[PCHPTestExample] 收到 onHide 事件: {data}"); + }); + } + + private void OnGUI() + { + // 简单的测试按钮 UI + GUILayout.BeginArea(new Rect(10, 10, 200, 300)); + GUILayout.Label("PC高性能小游戏测试"); + + if (GUILayout.Button("ShowToast")) + { + TestShowToast(); + } + + if (GUILayout.Button("ShowModal")) + { + TestShowModal(); + } + + if (GUILayout.Button("ShowLoading")) + { + TestShowLoading(); + } + + if (GUILayout.Button("GetSystemInfo")) + { + TestGenericAPICall(); + } + + if (GUILayout.Button("Register Events")) + { + TestEventListener(); + } + + GUILayout.EndArea(); + } + } +} diff --git a/Runtime/Examples/PCHPTestExample.cs.meta b/Runtime/Examples/PCHPTestExample.cs.meta new file mode 100644 index 000000000..c736d0c30 --- /dev/null +++ b/Runtime/Examples/PCHPTestExample.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0ded19877eaa0ed06ad5a1d789d245ee +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Runtime/Plugins/wx-perf.dll b/Runtime/Plugins/wx-perf.dll index 5320d0af31869643da3fd2279123fd543b6fd455..df66707a63c5277f40ceeade55d85677fc11d08d 100644 GIT binary patch delta 38 wcmV+>0NMY5v;%;&1CWRVJypZ8i=o62hYe(hna>hHr1&t#t53Q-vpmJb6i#Fj*8l(j 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..bf866ee49f7ff0fc419d5e19dadccf61bdc6e6f3 100644 GIT binary patch delta 199 zcmZp8A<*zbU_uA8Rp{Zy?ycR7wYM1Ew{zZRTxi6e#rS|pm?3BTMqZ}hjf{EQ*Y-2r z>(DTAGjwq>F*4RQb}};6H8FBD)3vlPG0=51HnMawHgk4yb2VWwWiZ>mS%UfP9%WZ2 z3qxloH(f^;XA@l$b3<2MOEU{&U1wugLl-wgQ#Uh5m+6PEGAo%Ap|F;Lfnn+MBC(j( Vx!z5SKWO?LvOKz7<{I;pSOCw|J}UqK delta 199 zcmZp8A<*zbU_uA8K+*Qb?ycR7wYM0(w{zZRTxi7Z%J_gun8AJfMqZ}hjf|e#*Y-2r z>(DS|Fk^7Fa5OeHHnh-nGqQBjHF0ut)^##9FxGW;GB`hOCw`l3nvq2T?=Om6EhbVLlb8=v+0MgGAo%Ap|F;Lf#G*d->GYv VZ~QmPe)$#m;#>Q6nQP2XVgY#5Ke7M- diff --git a/Runtime/Plugins/wx-runtime-editor.xml.meta b/Runtime/Plugins/wx-runtime-editor.xml.meta index 4006ea299..51f2a69c2 100644 --- a/Runtime/Plugins/wx-runtime-editor.xml.meta +++ b/Runtime/Plugins/wx-runtime-editor.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 59f30477a8bb77aeb6d56b69f0799388 +guid: 7eb6341fbacdfb6abbd4ac20932f16cd DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/Plugins/wx-runtime.dll b/Runtime/Plugins/wx-runtime.dll index b5bebdce29223d342daa29fb3f9500e01d2a78f6..fd69c86fae888537fcd64d713a5bc895cd0dddaa 100644 GIT binary patch delta 48 zcmZoz!r!oje?kYdN$BCm?$&O`)^4V)-OQF10(tlN;yupgyX~)EW41SX>DujADwuU5 E0q3?9ng9R* delta 48 zcmV-00MGw`qz{0k50Hoh3v#!Ci-n5;g^L2Uivu}$5YMtyhT@K2NW1d;I3#SbxVO}J G11wqlhZVm7 diff --git a/Runtime/Plugins/wx-runtime.xml.meta b/Runtime/Plugins/wx-runtime.xml.meta index 47bcc2740..7c55c4b20 100644 --- a/Runtime/Plugins/wx-runtime.xml.meta +++ b/Runtime/Plugins/wx-runtime.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 33778f932d74b9c0309d7573c86c9e5b +guid: 8903e1fcd9b8806b128a853f763aedc1 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/WXBase.cs b/Runtime/WXBase.cs index 7f7718edd..591aec7e8 100644 --- a/Runtime/WXBase.cs +++ b/Runtime/WXBase.cs @@ -1195,8 +1195,38 @@ namespace WeChatWASM public static WXRankManager GetRankManager() { return WXSDKManagerHandler.Instance.GetRankManager(); } - } -} #endregion +#region PC高性能小游戏 + /// + /// 获取 PC 高性能小游戏管理器 + /// 类似于 VA 方案的 wx.getAndroidHighPerformanceManager() + /// 用于在 PC 原生环境下与微信基础库通信 + /// + /// PC高性能管理器实例,如果不支持则返回 null + /// + /// var pcManager = WX.GetPCHighPerformanceManager(); + /// if (pcManager != null && pcManager.IsSupported) + /// { + /// pcManager.ShowToast(new PCHPShowToastOption + /// { + /// title = "Hello PC!", + /// icon = "success", + /// duration = 2000 + /// }); + /// } + /// + public static WXPCHighPerformanceManager GetPCHighPerformanceManager() + { +#if UNITY_STANDALONE_WIN + return WXPCHighPerformanceManager.GetInstance(); +#else + Debug.LogWarning("[WX] GetPCHighPerformanceManager 仅在 Windows 平台可用"); + return null; +#endif + } +#endregion + } +} + #endif diff --git a/Runtime/WXPCHPInitScript.cs b/Runtime/WXPCHPInitScript.cs new file mode 100644 index 000000000..2dc663aec --- /dev/null +++ b/Runtime/WXPCHPInitScript.cs @@ -0,0 +1,972 @@ +using System; +using System.Collections.Generic; +using System.Collections.Concurrent; +using System.Runtime.InteropServices; +using UnityEngine; +using LitJson; + +namespace WeChatWASM +{ + #region Message Protocol Models + + /// + /// PC高性能方案通信协议 - 请求消息 + /// C# -> DLL -> 内核 -> 基础库 + /// + [Serializable] + public class PCHPRequestMessage + { + /// + /// 消息类型: "request" | "event_register" | "event_unregister" + /// + public string type; + + /// + /// 请求ID,用于匹配回调 + /// + public string requestId; + + /// + /// API名称,如 "showToast", "login" 等 + /// + public string api; + + /// + /// API参数,JSON格式 + /// + public string data; + + /// + /// 时间戳 + /// + public long timestamp; + } + + /// + /// PC高性能方案通信协议 - 响应消息 + /// 基础库 -> 内核 -> DLL -> C# + /// + [Serializable] + public class PCHPResponseMessage + { + /// + /// 消息类型: "response" | "event" + /// + public string type; + + /// + /// 请求ID,与请求消息匹配 + /// + public string requestId; + + /// + /// 回调类型: "success" | "fail" | "complete" + /// + public string callbackType; + + /// + /// API名称(事件类型时使用) + /// + public string api; + + /// + /// 响应数据,JSON格式 + /// + public string data; + + /// + /// 错误信息(失败时) + /// + public string errMsg; + + /// + /// 时间戳 + /// + public long timestamp; + } + + /// + /// 通用回调结果 + /// + [Serializable] + public class PCHPGeneralCallbackResult + { + public string errMsg; + } + + /// + /// ShowToast 参数 + /// + [Serializable] + public class PCHPShowToastOption + { + public string title; + public string icon; + public string image; + public int duration; + public bool mask; + } + + /// + /// ShowModal 参数 + /// + [Serializable] + public class PCHPShowModalOption + { + public string title; + public string content; + public bool showCancel; + public string cancelText; + public string cancelColor; + public string confirmText; + public string confirmColor; + public bool editable; + public string placeholderText; + } + + /// + /// ShowModal 成功回调结果 + /// + [Serializable] + public class PCHPShowModalSuccessCallbackResult + { + public bool confirm; + public bool cancel; + public string content; + public string errMsg; + } + + #endregion + + /// + /// PC高性能小游戏初始化脚本 + /// 负责与宿主程序的 direct_applet_sdk.dll 进行交互 + /// + public class WXPCHPInitScript : MonoBehaviour + { + #region DLL Imports + + private const string DLL_NAME = "direct_applet_sdk.dll"; + + // 初始化SDK + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool InitEmbeddedGameSDK(); + + // 注册异步消息处理器 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern void RegisterAsyncMsgHandler(AsyncMsgHandlerDelegate handler); + + // 建立Mojo连接 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool EstablishConnection(); + + // 初始化游戏窗口 - 传入窗口句柄 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool InitGameWindow(ulong hwnd); + + // 异步发送消息 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool SendMsgAsync(IntPtr data, int len); + + // 清理资源 + [DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)] + private static extern bool Cleanup(); + + // 获取当前活动窗口句柄 + [DllImport("user32.dll")] + private static extern IntPtr GetActiveWindow(); + + // Windows MessageBox + [DllImport("user32.dll", CharSet = CharSet.Unicode)] + private static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type); + + #endregion + + #region Delegate Definition + + // 异步消息处理器委托 + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + private delegate void AsyncMsgHandlerDelegate(IntPtr data, int len); + + // 保持委托引用,防止被GC回收 + private static AsyncMsgHandlerDelegate asyncMsgHandler; + + #endregion + + #region Singleton + + private static WXPCHPInitScript instance; + public static WXPCHPInitScript Instance => instance; + + #endregion + + #region Callback Management + + /// + /// 回调信息封装 + /// + private class CallbackInfo + { + public Action OnSuccess; + public Action OnFail; + public Action OnComplete; + public string ApiName; + public long Timestamp; + } + + // 待处理的回调字典 + private readonly Dictionary _pendingCallbacks = new Dictionary(); + + // 事件监听器字典 >> + private readonly Dictionary>> _eventListeners = new Dictionary>>(); + + // 请求ID计数器 + private int _requestIdCounter = 0; + + // 线程安全的消息队列,用于主线程处理 + private readonly ConcurrentQueue _messageQueue = new ConcurrentQueue(); + + #endregion + + #region Events + + // 收到异步消息时触发的事件(原始字节) + public event Action OnMessageReceived; + + #endregion + + #region Properties + + // SDK是否已初始化 + public bool IsInitialized { get; private set; } + + // 是否已连接 + public bool IsConnected { get; private set; } + + // 窗口句柄 + public IntPtr WindowHandle { get; private set; } + + #endregion + + #region Unity Lifecycle + + private void Awake() + { + Debug.Log("[WXPCHPInitScript] ========== Awake 被调用 =========="); + Debug.Log($"[WXPCHPInitScript] GameObject 名称: {gameObject.name}"); + Debug.Log($"[WXPCHPInitScript] 场景名称: {UnityEngine.SceneManagement.SceneManager.GetActiveScene().name}"); + + if (instance != null && instance != this) + { + Debug.LogWarning("[WXPCHPInitScript] 检测到重复实例,销毁当前对象"); + Destroy(gameObject); + return; + } + + instance = this; + DontDestroyOnLoad(gameObject); + Debug.Log("[WXPCHPInitScript] 单例创建成功,已设置 DontDestroyOnLoad"); + + // 初始化SDK + Initialize(); + } + + private void Update() + { + // 在主线程中处理消息队列 + ProcessMessageQueue(); + } + + private void OnDestroy() + { + if (instance == this) + { + CleanupSDK(); + instance = null; + } + } + + private void OnApplicationQuit() + { + CleanupSDK(); + } + + #endregion + + #region Public Methods - SDK Lifecycle + + /// + /// 初始化SDK并建立连接 + /// + public void Initialize() + { + if (IsInitialized) + { + Debug.LogWarning("[WXPCHPInitScript] SDK已经初始化"); + return; + } + + Debug.Log("[WXPCHPInitScript] ========== 开始初始化 =========="); + Debug.Log($"[WXPCHPInitScript] 当前工作目录: {System.IO.Directory.GetCurrentDirectory()}"); + Debug.Log($"[WXPCHPInitScript] DLL 搜索路径: {DLL_NAME}"); + + ShowStepInfo("SDK 初始化开始", "即将执行 PC 高性能模式 SDK 初始化流程...\n\n共 5 个步骤:\n1. InitEmbeddedGameSDK\n2. RegisterAsyncMsgHandler\n3. EstablishConnection\n4. GetActiveWindow\n5. InitGameWindow"); + + try + { + // 1. 初始化SDK + Debug.Log("[WXPCHPInitScript] Step 1: 调用 InitEmbeddedGameSDK"); + ShowStepInfo("步骤 1/5 - InitEmbeddedGameSDK", "正在初始化嵌入式游戏 SDK..."); + if (!InitEmbeddedGameSDK()) + { + ShowError("InitEmbeddedGameSDK 返回 false"); + return; + } + ShowStepInfo("步骤 1/5 - InitEmbeddedGameSDK ✅", "InitEmbeddedGameSDK 调用成功!"); + + // 2. 注册消息处理器 + Debug.Log("[WXPCHPInitScript] Step 2: 调用 RegisterAsyncMsgHandler"); + ShowStepInfo("步骤 2/5 - RegisterAsyncMsgHandler", "正在注册异步消息处理器..."); + asyncMsgHandler = HandleAsyncMessage; + RegisterAsyncMsgHandler(asyncMsgHandler); + ShowStepInfo("步骤 2/5 - RegisterAsyncMsgHandler ✅", "异步消息处理器注册成功!"); + + // 3. 建立连接 + Debug.Log("[WXPCHPInitScript] Step 3: 调用 EstablishConnection"); + ShowStepInfo("步骤 3/5 - EstablishConnection", "正在建立 Mojo 连接..."); + if (!EstablishConnection()) + { + ShowError("EstablishConnection 返回 false"); + IsConnected = false; + return; + } + IsConnected = true; + ShowStepInfo("步骤 3/5 - EstablishConnection ✅", "Mojo 连接建立成功!"); + + // 4. 获取窗口句柄并初始化游戏窗口 + Debug.Log("[WXPCHPInitScript] Step 4: 获取窗口句柄"); + ShowStepInfo("步骤 4/5 - GetActiveWindow", "正在获取游戏窗口句柄..."); + WindowHandle = GetActiveWindow(); + if (WindowHandle == IntPtr.Zero) + { + ShowError("GetActiveWindow 返回空句柄"); + return; + } + Debug.Log($"获取窗口句柄成功: 0x{WindowHandle.ToInt64():X}"); + ShowStepInfo("步骤 4/5 - GetActiveWindow ✅", $"窗口句柄获取成功: 0x{WindowHandle.ToInt64():X}"); + + // 5. 通知内核获取窗口句柄 + Debug.Log("[WXPCHPInitScript] Step 5: 调用 InitGameWindow"); + ShowStepInfo("步骤 5/5 - InitGameWindow", $"正在初始化游戏窗口...\n窗口句柄: 0x{WindowHandle.ToInt64():X}"); + if (!InitGameWindow((ulong)WindowHandle.ToInt64())) + { + ShowError("InitGameWindow 返回 false"); + return; + } + ShowStepInfo("步骤 5/5 - InitGameWindow ✅", "游戏窗口初始化成功!"); + + IsInitialized = true; + Debug.Log("[WXPCHPInitScript] ========== 初始化完成 =========="); + ShowStepInfo("🎉 SDK 初始化完成", "PC 高性能模式 SDK 所有步骤均已成功完成!\n\n✅ InitEmbeddedGameSDK\n✅ RegisterAsyncMsgHandler\n✅ EstablishConnection\n✅ GetActiveWindow\n✅ InitGameWindow"); + } + catch (DllNotFoundException e) + { + ShowError($"找不到DLL: {e.Message}\n\n请确保 {DLL_NAME} 在以下位置之一:\n- 与 .exe 同级目录\n- System32 目录\n- PATH 环境变量包含的路径"); + Debug.LogError($"[WXPCHPInitScript] DLL 加载失败,请确保 {DLL_NAME} 在以下位置之一:"); + Debug.LogError($" - 与 .exe 同级目录"); + Debug.LogError($" - System32 目录"); + Debug.LogError($" - PATH 环境变量包含的路径"); + } + catch (EntryPointNotFoundException e) + { + ShowError($"找不到函数入口: {e.Message}\n\n可能是 DLL 版本不匹配"); + Debug.LogError($"[WXPCHPInitScript] 函数入口点错误,可能是 DLL 版本不匹配"); + } + catch (Exception e) + { + ShowError($"初始化异常: {e.Message}\n{e.StackTrace}"); + Debug.LogError($"[WXPCHPInitScript] 未知异常: {e}"); + } + } + + #endregion + + #region Public Methods - WX API Calls + + /// + /// 调用微信API(通用方法) + /// + /// API名称,如 "showToast" + /// API参数对象 + /// 成功回调 + /// 失败回调 + /// 完成回调 + /// 请求ID + public string CallWXAPI(string apiName, object data, Action onSuccess = null, Action onFail = null, Action onComplete = null) + { + if (!IsInitialized || !IsConnected) + { + Debug.LogWarning($"[WXPCHPInitScript] SDK未初始化或未连接,无法调用 {apiName}"); + onFail?.Invoke(JsonMapper.ToJson(new PCHPGeneralCallbackResult { errMsg = "SDK not initialized" })); + onComplete?.Invoke(JsonMapper.ToJson(new PCHPGeneralCallbackResult { errMsg = "SDK not initialized" })); + return null; + } + + string requestId = GenerateRequestId(); + string dataJson = data != null ? JsonMapper.ToJson(data) : "{}"; + + // 注册回调 + var callbackInfo = new CallbackInfo + { + OnSuccess = onSuccess, + OnFail = onFail, + OnComplete = onComplete, + ApiName = apiName, + Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + }; + _pendingCallbacks[requestId] = callbackInfo; + + // 构建请求消息 + var request = new PCHPRequestMessage + { + type = "request", + requestId = requestId, + api = apiName, + data = dataJson, + timestamp = callbackInfo.Timestamp + }; + + string requestJson = JsonMapper.ToJson(request); + Debug.Log($"[WXPCHPInitScript] 发送API请求: {apiName}, requestId: {requestId}"); + + if (!SendMessageInternal(requestJson)) + { + _pendingCallbacks.Remove(requestId); + onFail?.Invoke(JsonMapper.ToJson(new PCHPGeneralCallbackResult { errMsg = "Failed to send message" })); + onComplete?.Invoke(JsonMapper.ToJson(new PCHPGeneralCallbackResult { errMsg = "Failed to send message" })); + return null; + } + + return requestId; + } + + /// + /// 显示消息提示框 + /// + public void ShowToast(PCHPShowToastOption option, Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("showToast", option, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + /// + /// 隐藏消息提示框 + /// + public void HideToast(Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("hideToast", null, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + /// + /// 显示模态对话框 + /// + public void ShowModal(PCHPShowModalOption option, Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("showModal", option, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + /// + /// 显示 loading 提示框 + /// + public void ShowLoading(string title, bool mask = false, Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("showLoading", new { title, mask }, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + /// + /// 隐藏 loading 提示框 + /// + public void HideLoading(Action success = null, Action fail = null, Action complete = null) + { + CallWXAPI("hideLoading", null, + res => success?.Invoke(JsonMapper.ToObject(res)), + res => fail?.Invoke(JsonMapper.ToObject(res)), + res => complete?.Invoke(JsonMapper.ToObject(res)) + ); + } + + #endregion + + #region Public Methods - Event Listeners + + /// + /// 注册事件监听器 + /// + /// 事件名称,如 "onShow", "onHide" + /// 回调函数 + public void RegisterEventListener(string eventName, Action callback) + { + if (!_eventListeners.ContainsKey(eventName)) + { + _eventListeners[eventName] = new List>(); + + // 发送事件注册消息到基础库 + var request = new PCHPRequestMessage + { + type = "event_register", + requestId = GenerateRequestId(), + api = eventName, + data = "{}", + timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + }; + SendMessageInternal(JsonMapper.ToJson(request)); + } + + _eventListeners[eventName].Add(callback); + Debug.Log($"[WXPCHPInitScript] 注册事件监听: {eventName}"); + } + + /// + /// 移除事件监听器 + /// + /// 事件名称 + /// 要移除的回调函数,为null则移除所有 + public void UnregisterEventListener(string eventName, Action callback = null) + { + if (!_eventListeners.ContainsKey(eventName)) + { + return; + } + + if (callback == null) + { + _eventListeners.Remove(eventName); + } + else + { + _eventListeners[eventName].Remove(callback); + if (_eventListeners[eventName].Count == 0) + { + _eventListeners.Remove(eventName); + } + } + + // 如果没有监听器了,通知基础库取消注册 + if (!_eventListeners.ContainsKey(eventName)) + { + var request = new PCHPRequestMessage + { + type = "event_unregister", + requestId = GenerateRequestId(), + api = eventName, + data = "{}", + timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + }; + SendMessageInternal(JsonMapper.ToJson(request)); + } + + Debug.Log($"[WXPCHPInitScript] 移除事件监听: {eventName}"); + } + + #endregion + + #region Public Methods - Raw Message + + /// + /// 发送原始消息字符串 + /// + /// 消息内容 + /// 是否发送成功 + public bool SendRawMessage(string message) + { + return SendMessageInternal(message); + } + + /// + /// 发送原始消息字节数组 + /// + /// 消息数据 + /// 是否发送成功 + public bool SendMessage(byte[] data) + { + if (!IsInitialized || !IsConnected) + { + Debug.LogWarning("[WXPCHPInitScript] SDK未初始化或未连接"); + return false; + } + + if (data == null || data.Length == 0) + { + Debug.LogWarning("[WXPCHPInitScript] 发送的数据为空"); + return false; + } + + try + { + IntPtr ptr = Marshal.AllocHGlobal(data.Length); + try + { + Marshal.Copy(data, 0, ptr, data.Length); + return SendMsgAsync(ptr, data.Length); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 发送消息异常: {e.Message}"); + return false; + } + } + + #endregion + + #region Private Methods + + /// + /// 生成唯一请求ID + /// + private string GenerateRequestId() + { + return $"pchp_{++_requestIdCounter}_{DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()}"; + } + + /// + /// 内部发送消息方法 + /// + private bool SendMessageInternal(string message) + { + if (!IsInitialized || !IsConnected) + { + Debug.LogWarning("[WXPCHPInitScript] SDK未初始化或未连接"); + return false; + } + + try + { + byte[] data = System.Text.Encoding.UTF8.GetBytes(message); + return SendMessage(data); + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 发送消息异常: {e.Message}"); + return false; + } + } + + /// + /// 显示步骤信息弹窗(Windows 使用 MessageBox,其他平台使用 Debug.Log) + /// + private void ShowStepInfo(string title, string message) + { + Debug.Log($"[WXPCHPInitScript] [{title}] {message}"); +#if UNITY_STANDALONE_WIN + try + { + // MB_OK | MB_ICONINFORMATION = 0x40 + MessageBox(IntPtr.Zero, message, $"PC高性能模式 - {title}", 0x40); + } + catch (System.Exception e) + { + Debug.LogWarning($"[WXPCHPInitScript] MessageBox 调用失败: {e.Message}"); + } +#endif + } + + /// + /// 显示错误弹窗(仅 Windows) + /// + private void ShowError(string message) + { + Debug.LogError($"[WXPCHPInitScript] {message}"); +#if UNITY_STANDALONE_WIN + try + { + // MB_OK | MB_ICONERROR = 0x10 + MessageBox(IntPtr.Zero, message, "WXPCHPInitScript Error", 0x10); + } + catch (System.Exception e) + { + Debug.LogWarning($"[WXPCHPInitScript] MessageBox 调用失败: {e.Message}"); + } +#endif + } + + /// + /// 清理SDK资源 + /// + private void CleanupSDK() + { + if (!IsInitialized) + { + return; + } + + try + { + // 清理待处理回调 + _pendingCallbacks.Clear(); + _eventListeners.Clear(); + + Cleanup(); + Debug.Log("[WXPCHPInitScript] SDK清理完成"); + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 清理异常: {e.Message}"); + } + finally + { + IsInitialized = false; + IsConnected = false; + } + } + + /// + /// 在主线程中处理消息队列 + /// + private void ProcessMessageQueue() + { + while (_messageQueue.TryDequeue(out var response)) + { + try + { + ProcessResponse(response); + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 处理响应消息异常: {e.Message}"); + } + } + } + + /// + /// 处理响应消息 + /// + private void ProcessResponse(PCHPResponseMessage response) + { + if (response.type == "response") + { + // 处理API回调 + if (_pendingCallbacks.TryGetValue(response.requestId, out var callbackInfo)) + { + Debug.Log($"[WXPCHPInitScript] 收到API响应: {callbackInfo.ApiName}, callbackType: {response.callbackType}"); + + switch (response.callbackType) + { + case "success": + callbackInfo.OnSuccess?.Invoke(response.data ?? "{}"); + break; + case "fail": + callbackInfo.OnFail?.Invoke(response.data ?? $"{{\"errMsg\":\"{response.errMsg}\"}}"); + break; + case "complete": + callbackInfo.OnComplete?.Invoke(response.data ?? "{}"); + // complete 后移除回调 + _pendingCallbacks.Remove(response.requestId); + break; + } + } + else + { + Debug.LogWarning($"[WXPCHPInitScript] 未找到对应的回调: requestId={response.requestId}"); + } + } + else if (response.type == "event") + { + // 处理事件通知 + string eventName = response.api; + if (_eventListeners.TryGetValue(eventName, out var listeners)) + { + Debug.Log($"[WXPCHPInitScript] 收到事件: {eventName}"); + foreach (var listener in listeners.ToArray()) + { + try + { + listener?.Invoke(response.data ?? "{}"); + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 事件回调异常: {eventName}, {e.Message}"); + } + } + } + } + } + + /// + /// 异步消息处理回调(从DLL回调,可能在非主线程) + /// + [AOT.MonoPInvokeCallback(typeof(AsyncMsgHandlerDelegate))] + private static void HandleAsyncMessage(IntPtr data, int len) + { + if (data == IntPtr.Zero || len <= 0) + { + return; + } + + try + { + byte[] buffer = new byte[len]; + Marshal.Copy(data, buffer, 0, len); + + if (instance != null) + { + // 触发原始消息事件 + instance.OnMessageReceived?.Invoke(buffer); + + // 解析消息 + string message = System.Text.Encoding.UTF8.GetString(buffer); + Debug.Log($"[WXPCHPInitScript] 收到原始消息: {message}"); + + try + { + // 尝试解析为响应消息 + var response = JsonMapper.ToObject(message); + if (response != null && !string.IsNullOrEmpty(response.type)) + { + // 加入消息队列,在主线程中处理 + instance._messageQueue.Enqueue(response); + } + } + catch (Exception parseEx) + { + Debug.LogWarning($"[WXPCHPInitScript] 消息解析失败,可能是非标准格式: {parseEx.Message}"); + } + } + } + catch (Exception e) + { + Debug.LogError($"[WXPCHPInitScript] 处理消息异常: {e.Message}"); + } + } + + #endregion + } + + /// + /// PC高性能小游戏管理器 + /// 提供类似 wx.getPCHighPerformanceManager() 的接口 + /// + public class WXPCHighPerformanceManager + { + private static WXPCHighPerformanceManager _instance; + private WXPCHPInitScript _initScript; + + /// + /// 获取 PC 高性能管理器实例 + /// + public static WXPCHighPerformanceManager GetInstance() + { + if (_instance == null) + { + _instance = new WXPCHighPerformanceManager(); + } + return _instance; + } + + private WXPCHighPerformanceManager() + { + _initScript = WXPCHPInitScript.Instance; + } + + /// + /// 是否支持PC高性能模式 + /// + public bool IsSupported => _initScript != null && _initScript.IsInitialized && _initScript.IsConnected; + + /// + /// 调用微信API + /// + public string CallWXAPI(string apiName, object data, Action onSuccess = null, Action onFail = null, Action onComplete = null) + { + if (_initScript == null) + { + Debug.LogError("[WXPCHighPerformanceManager] InitScript 未初始化"); + return null; + } + return _initScript.CallWXAPI(apiName, data, onSuccess, onFail, onComplete); + } + + /// + /// 显示 Toast + /// + public void ShowToast(PCHPShowToastOption option, Action success = null, Action fail = null, Action complete = null) + { + _initScript?.ShowToast(option, success, fail, complete); + } + + /// + /// 隐藏 Toast + /// + public void HideToast(Action success = null, Action fail = null, Action complete = null) + { + _initScript?.HideToast(success, fail, complete); + } + + /// + /// 显示模态对话框 + /// + public void ShowModal(PCHPShowModalOption option, Action success = null, Action fail = null, Action complete = null) + { + _initScript?.ShowModal(option, success, fail, complete); + } + + /// + /// 显示 Loading + /// + public void ShowLoading(string title, bool mask = false, Action success = null, Action fail = null, Action complete = null) + { + _initScript?.ShowLoading(title, mask, success, fail, complete); + } + + /// + /// 隐藏 Loading + /// + public void HideLoading(Action success = null, Action fail = null, Action complete = null) + { + _initScript?.HideLoading(success, fail, complete); + } + + /// + /// 注册事件监听 + /// + public void On(string eventName, Action callback) + { + _initScript?.RegisterEventListener(eventName, callback); + } + + /// + /// 移除事件监听 + /// + public void Off(string eventName, Action callback = null) + { + _initScript?.UnregisterEventListener(eventName, callback); + } + + /// + /// 发送原始消息 + /// + public bool SendRawMessage(string message) + { + return _initScript?.SendRawMessage(message) ?? false; + } + } +} diff --git a/Runtime/WXPCHPInitScript.cs.meta b/Runtime/WXPCHPInitScript.cs.meta new file mode 100644 index 000000000..54959e04f --- /dev/null +++ b/Runtime/WXPCHPInitScript.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 65b48177033749bf973a8af5bfb6b257 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Runtime/playable-default/check-version.js.meta b/Runtime/playable-default/check-version.js.meta index 3ee1fbe67..5f3c86201 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: 28899446f92813abc017215ece09564b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/data-package.meta b/Runtime/playable-default/data-package.meta index fb95538b9..79cfc5a26 100644 --- a/Runtime/playable-default/data-package.meta +++ b/Runtime/playable-default/data-package.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6c06693e00be3ab1fde2607590ab4e6d +guid: aa1d5b30a1d9014052f11cad2670393e 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..87d2e03f8 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: 56560c181a50b6ed69dbce5f841a46ee DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/events.js.meta b/Runtime/playable-default/events.js.meta index 0481ed41a..722b70e60 100644 --- a/Runtime/playable-default/events.js.meta +++ b/Runtime/playable-default/events.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: de11e750d070e1521430f1ea7d7e9b10 + guid: cd9d2a4b822b2a6e9e9cad875b78d30e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/game.js.meta b/Runtime/playable-default/game.js.meta index 4b92cef81..6395ffd6b 100644 --- a/Runtime/playable-default/game.js.meta +++ b/Runtime/playable-default/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 75c495849e8b58894c4df4019c28990f + guid: b78fadb0d56d2651cce08e4d0a1d7b8b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/game.json.meta b/Runtime/playable-default/game.json.meta index eb5ec6a81..eeea48b3e 100644 --- a/Runtime/playable-default/game.json.meta +++ b/Runtime/playable-default/game.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 2676c806e8720f27b3c91d7b88934aea + guid: ca563ce4e3d50d40250ace95cf4d2b5a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/playable-fix.js.meta b/Runtime/playable-default/playable-fix.js.meta index 53c145c8e..1c8fea1fa 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: 6e3e482927dfab693668a487c92625df DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/plugin-config.js.meta b/Runtime/playable-default/plugin-config.js.meta index 08bed247a..eb4931fdd 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: 140e14eadf2ba97e573fb02804b4908e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/plugins.meta b/Runtime/playable-default/plugins.meta index b3393336c..fd6705239 100644 --- a/Runtime/playable-default/plugins.meta +++ b/Runtime/playable-default/plugins.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fdc5a07bfe255668c4bc90b063ab0439 +guid: ea4fc096af9a7cc258be6de28299cc10 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..b8226f037 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: 77d410f576a4c99b91ee1eaa4ec9ed6b 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..a5af119d6 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: 8c0de764e7412cdac5ac442449b57c4c DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/project.config.json.meta b/Runtime/playable-default/project.config.json.meta index c0d720d1c..c520bb656 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: c63edd3a8984af6f437d335d4da6d55b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/texture-config.js.meta b/Runtime/playable-default/texture-config.js.meta index 2bbf5fa16..9097acf3a 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: 62d7d82e71575079d903119515b7e02b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-namespace.js.meta b/Runtime/playable-default/unity-namespace.js.meta index 2945472bd..982edfbd9 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: 3b69d1bf725f2a5b22174676c711bdfb DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-playable-plugin.meta b/Runtime/playable-default/unity-playable-plugin.meta index d18d1f76d..e99e73dff 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: 7ffc8f045e80e93dcf8421ceccdd2286 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..430fcfd45 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: ad8fdb60f01b5dc2bee092b99c69bc53 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk.meta b/Runtime/playable-default/unity-sdk.meta index e69020b1b..cd4282f4a 100644 --- a/Runtime/playable-default/unity-sdk.meta +++ b/Runtime/playable-default/unity-sdk.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b193152a2bbc37d0feda3c6544e7afc8 +guid: a01044e15755b708d9152afeb5b99af2 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/unity-sdk/audio.meta b/Runtime/playable-default/unity-sdk/audio.meta index f4c7747ef..e7eace77d 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: 4611d918af0c2abf544919b91c34c24a 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..df96c57d1 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: f93674309736b866b67fce195487754f 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..13f7cea56 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: 5dcbc4a169b3678d94199c6e3c69b023 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..cb84e21be 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: d8851e8edd336d9adc7ea544668daefb 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..8ef09de55 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: 523efb46f09536abea4b253fe4597b61 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..d3e71d4bb 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: 86b43213e9f94d8022cd863f7f154517 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..936320dd5 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: 70707c20b429a5ad0bb9758ef9c4ee88 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..7c033b8f5 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: 878874b37e27c8785c5b4215032c0e4c 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..db0d88df6 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: ee8906ec10a506f89e2e595854b6ed95 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..1f6fb5820 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: 1b28f3de84eebf692b06882e12ca107e 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..d244ceba2 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: 2d4a6b0ae9e133566ffbe634063068b4 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..0a10dd9f0 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: 6e50143d925c2d3bccb04bd306874aca 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..f0d54a5d4 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: d6830ecbe3ebd9fc7c99628994e2109b 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..f761ceeaa 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: 810022c3291e27903e54afe0c3ed356c 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..f2318136f 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: bc6d35876a1df184808fcf7ea16299f1 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..4df62b2b5 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: 986ac1ae35cec7469862f9d6a70545dd DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/mobileKeyboard.meta b/Runtime/playable-default/unity-sdk/mobileKeyboard.meta index af2d906db..f14d383c1 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: 7903401c90fdd999396fddef97b0c5b4 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..dfc8370b2 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: 20932608b374aead69eef9dfd15276b4 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..5129973d9 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: 9d66cf62d960c22a50c3608e8722391d 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..52f5e481d 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: f7d6d428f44cb4f9017753e54c8792d4 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..c4be03961 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: 3c2dddbf9d3aabbed6d42b974d235a43 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..582770ce3 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: 916440cf074e747848cb654d14f13861 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..a43d3d1b0 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: ba5c8a70265edd293a0bbc1bca8e1f23 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..af1da2509 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: 5a047f6985037ff4af2f0216cae1e0d0 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..0909ad0dc 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: edb36dedb719e633c52aab7b5f8fa6fd 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..111fbda8b 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: 0f10a9296a26f6b141050605f16db459 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/touch.meta b/Runtime/playable-default/unity-sdk/touch.meta index b3ce6d8cc..1bcd2d4c6 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: 395f3f8506fbde9f2d9595a862c0debb 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..2a88f3e9d 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: 90ae68d3704fdb72ab4e9f0fd382f475 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..736c934f0 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: a7933293bdabc5401eb78c5c2a67c2d2 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..ea73dbbd9 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: 10cd9eebf96f177c39cd69b560cea12d 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..2a1868ef7 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: ae717fecd969ec6df4155595fb026b75 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/unity-sdk/video.meta b/Runtime/playable-default/unity-sdk/video.meta index f65da60aa..650165abb 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: 063167dda766bb04e0e86aac07d043ae 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..382c67bf5 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: 3d7597262408e2f20b02f5a1bff34903 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/wasmcode.meta b/Runtime/playable-default/wasmcode.meta index ba0aa256d..7145c7292 100644 --- a/Runtime/playable-default/wasmcode.meta +++ b/Runtime/playable-default/wasmcode.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 47d2bb9aac0b87cfdf12358dc192e755 +guid: cf20302275f0146493a7fe14f657decd folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/playable-default/wasmcode/game.js.meta b/Runtime/playable-default/wasmcode/game.js.meta index 11e065318..bf3f2e4d0 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: d5b52d5802ad2bccc888949cf66982e0 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/playable-default/weapp-adapter.js.meta b/Runtime/playable-default/weapp-adapter.js.meta index 04b3af04a..34d7fdaa1 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: 5a7e11087cbf87e802659b3456593e3f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/check-version.js.meta b/Runtime/wechat-default/check-version.js.meta index 69124942e..fd845b670 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: 252e8a34c210937fd548bad299010393 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/data-package.meta b/Runtime/wechat-default/data-package.meta index a2d178242..9bb1d6861 100644 --- a/Runtime/wechat-default/data-package.meta +++ b/Runtime/wechat-default/data-package.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 873c3ff5c09c499cea533e76613b289c +guid: 0b55a20502c5a31cf83c607b8d02c793 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..4c3389c15 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: 92c6b0ea472825b3c96bc55b97759662 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/events.js.meta b/Runtime/wechat-default/events.js.meta index e2aba010f..02cfce041 100644 --- a/Runtime/wechat-default/events.js.meta +++ b/Runtime/wechat-default/events.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: 0f5d268ad00ae324c34a888a2bc0f3b9 + guid: 083c7cc77d88b5ea17946429df108415 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/game.js.meta b/Runtime/wechat-default/game.js.meta index 88a17a104..14cbe555b 100644 --- a/Runtime/wechat-default/game.js.meta +++ b/Runtime/wechat-default/game.js.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: c4b7634dc3628a25ae87b92a174f5056 + guid: ddb5b594a8c36b4d6aa282b1642b3115 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/game.json.meta b/Runtime/wechat-default/game.json.meta index 71ff9558f..925d534a6 100644 --- a/Runtime/wechat-default/game.json.meta +++ b/Runtime/wechat-default/game.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 - guid: acc81d1c264bc0dadd4552d59e6b5cc0 + guid: b69b9c95a5eaee75b990748fb3349fe1 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/images.meta b/Runtime/wechat-default/images.meta index a759e39d2..925cc13bf 100644 --- a/Runtime/wechat-default/images.meta +++ b/Runtime/wechat-default/images.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 304fa8442a722ea29aaf75c80ecf36d0 +guid: 88c9729d66da5e03f0d986dfcfcbaac2 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/images/background.jpg.meta b/Runtime/wechat-default/images/background.jpg.meta index 84907c342..fd4ea2b26 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: 61e3864b146a15bd1001edb987600f68 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..aea5d0987 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: da519d291f45321de3669a9c2242ae7d DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data.meta b/Runtime/wechat-default/open-data.meta index 407e58d88..0500f1197 100644 --- a/Runtime/wechat-default/open-data.meta +++ b/Runtime/wechat-default/open-data.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f54994eb4369a71edd1d509002ad2f14 +guid: f04169480cf692873309cef1f4b0a6c8 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/open-data/data.meta b/Runtime/wechat-default/open-data/data.meta index 8b4d35470..50eecfe0d 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: fd3034a9e5d848643c9b02c1caef7699 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..8d3ccd665 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: 38c1a3295ec3820866efeb892a9f3aac 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..9a9529656 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: 67459c98836cb4524ce79af7c167b045 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..6b118312e 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: 73c83bec8fece5a1ecdffcf03ffbe742 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..2c9e90667 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: 29747fb536135bf9897bbb87d1cb1bc8 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/open-data/render.meta b/Runtime/wechat-default/open-data/render.meta index f38c2a239..3eb36be12 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: 7ed628f06e22df3399c522d31fca85f0 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..2670db6ad 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: 6d937f52be53a2517a33ca24a8653ba2 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..b90aedd10 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: a26a13b4fc40c861022fa0bb4ab457a4 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..3d88422e6 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: 5b0f3d52af2da668cc5bd085084975ea 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..24934c9fd 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: c7c1610bc12f8562fa967b11f99ca48a 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..6ae232943 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: fbaa74d161e6ca01a643bb8662af08ce 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..d676aece3 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: 17d737b64e09eba8971a581375f387ae 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..77a8ba863 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: 3881c9a8d6afb2b61b0f961a02c97954 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..4eea9129a 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: c3b3e717c6bc8c7d03e3a06eaaef6691 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..6f82f35b0 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: 7f19ca688771786d2f1970a7bf244039 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..5709bc543 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: ed4f59bb5bfe34aaf010577778787bea 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..5c4a86aac 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: d9bc3ab24d6286593d22fff04b78b815 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..23cd19799 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: cf37eb7eaf50f9af3fe4662e469ec5dc 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..e63d4afe5 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: 4f07c34aadfcd3f6d64388449992d014 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..0e7901050 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: bc090be07df21b426fec58b4fbeb20b7 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..a2a6741dd 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: 36a6dbbdf513731f032d793718e4eeb1 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..5d1517f67 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: ac22a84e8229126a03c9ba50aff83090 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..5fabcd47b 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: 2e0f34277752cc7bc4625d4e7070ded5 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/plugin-config.js.meta b/Runtime/wechat-default/plugin-config.js.meta index 3f17ab3a7..097ccb166 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: 7886f5612071174b3ae1ee54464ae3e0 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/plugins.meta b/Runtime/wechat-default/plugins.meta index fc981b2a9..b4c7b61e8 100644 --- a/Runtime/wechat-default/plugins.meta +++ b/Runtime/wechat-default/plugins.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6a74b91bbf9d4d98c4fff2ffab7a52c9 +guid: e7a0bf1ac09b898b9b8e2e930b6c5239 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..b285c1c82 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: a82bfa406a1a2a7a1b38ffc44de478d7 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..79ed76238 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: 3d1505d606194a8996d5e9dc2c0310f3 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/project.config.json.meta b/Runtime/wechat-default/project.config.json.meta index e49b727e1..ad9910dc7 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: b55017fd77c827ba2b2fe33cfd652294 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/texture-config.js.meta b/Runtime/wechat-default/texture-config.js.meta index 287bac263..3d4c30d3d 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: 17419c52b45010f1a3e18abb161de70f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-namespace.js.meta b/Runtime/wechat-default/unity-namespace.js.meta index 2b1180e8d..92dd9d2d6 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: c6ba5ab87e9f2389933705d8c7959bfd DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk.meta b/Runtime/wechat-default/unity-sdk.meta index 15cc2d141..4e446ea58 100644 --- a/Runtime/wechat-default/unity-sdk.meta +++ b/Runtime/wechat-default/unity-sdk.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f5411f494113c860af36d9dc677da755 +guid: f14496534fa84504e9f475b64e53d1ed folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/unity-sdk/TCPSocket.meta b/Runtime/wechat-default/unity-sdk/TCPSocket.meta index cfd10c115..c3022f9cc 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: 405bfec4b687af0d3293080ff07682cb 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..41a0cd274 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: 5100866514793f00fe9284ca4a89ee6e DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/UDPSocket.meta b/Runtime/wechat-default/unity-sdk/UDPSocket.meta index 56dd83b4c..e59f6fb79 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: d1b4602a9b49946bbb8d20147c2f7a77 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..5abcc473e 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: f10d50f6fde225bc50f3e880065e8d6e 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..db7329f92 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: af405bb558b989b7048a5ec72f5a2f43 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/audio.meta b/Runtime/wechat-default/unity-sdk/audio.meta index cfb18e7e4..069f71e86 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: 74e3ee440d9de1286f38b10dd8bd4cf2 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..d1737d982 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: 2ba717233be99816e8d417f6a1cfecaf 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..15ab82286 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: 30ebcc92034e10764cc7cd4ba71b5995 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..a1d00edef 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: 01dda61a224d7a96a25e4eb9c378dc75 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..e1cd443f0 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: 8c427fa659196b2a2313d58ab49fe898 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..5cfaf2db5 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: 64dda8b5deb69e126fce5cb749968d01 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..dc0efcb8c 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: c107063929d78a7fe7fccd2e0dc13353 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..d626eb33d 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: 41dc8b6a9afa98e3a3d2d065ac6b20e6 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..35ad6db57 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: 6d736f80985418f8c12f776b3bb17f50 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/bluetooth.meta b/Runtime/wechat-default/unity-sdk/bluetooth.meta index 2830c2a0d..0f9b5dc1b 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: f200f17dc82f047307c5064d6f884d61 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..4f15e6bdc 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: 768b3f72a08542feb7b330ae445f9ac5 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..20f11f0a9 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: f9d5089a931a6bf833b40aa11be5d413 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..54fc07482 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: 3ec546addd21f762ac029b61c083da3e 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..96b6918ce 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: f9636e1df73e62b23f0b978316669585 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..4af0a2ca1 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: 0b3a3cc808b40c2d6481d411f2fc5c5c 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..1b39b7cf2 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: b7d32c17417aa69a0f91e251a4207bd8 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..cf4b89197 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: e3e5c1d2e04aeeb9a33fd1e8c48b6f6d 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..64f403f24 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: d2665cf356a9f3ba6b52e22ecf2f1ae1 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..ed4c4783a 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: 2aff8da1f800a26e8b8beee6584d6fab DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/font.meta b/Runtime/wechat-default/unity-sdk/font.meta index 6c3f7076e..3f1ae1cdf 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: f545e0c7261cd1a54c46bc7f19ac64b2 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..f5d09e5b4 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: 0876610c5e54f4b78fb65b0ee8b53093 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..66246ade4 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: d26a0a8b5bd1fd52aa8739c5af4ee0c3 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..1fb304e75 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: 7e4cd50192ee39cf45072226cf2df050 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..e91867fc0 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: 2b218eb0ca54a7015ea428dea5348d26 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..e741566fe 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: b40d10a49b76200776bef63f98e163b3 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..910030f1f 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: c7c6a3253d21c0f7f9dce0a7c087dea2 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..e8d146edf 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: 0738929cf4a045b1c24a787f3f3d18eb 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..31d3fd024 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: 6d56a0bf029f5826202fe62d2562fd5a DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/gyroscope.meta b/Runtime/wechat-default/unity-sdk/gyroscope.meta index 4b488dfe4..6ea292db1 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: f0a0d6d707d3aaef172d7c51b4405d71 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..7e70a29ae 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: 8749472ae7bb1a2ed86b90d93b8f50de 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..f2becb3d0 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: e08ec34c4b8a6c99e11f460a91b35537 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..e0bfa5883 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: ddb4fdf6ccdc0298e81ad978a25b073b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/mobileKeyboard.meta b/Runtime/wechat-default/unity-sdk/mobileKeyboard.meta index 2a4e99f66..e5494ba2e 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: 3acc83f17835801f4bbbfc15f5df082e 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..d7655e10a 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: f2ec46f13817f96939f7969e5a66b7cc 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..3e7ea2507 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: 8391b5e252af20cb5bca23403d4c9d2b 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..32f29e922 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: 53f42912a4624a25f9a14a1bda33c215 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..30504f4b6 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: 6336faf3254b535c0da8623d5cfe48db 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..642ac72e9 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: 2b783bf91bc2daa731154d95978bb1f1 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..3707bcfd5 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: f38c90211ac50271262286115c80f1ef 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..8af946f71 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: 085942c8ea81900156dcabde672905cb 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..b372a2d3f 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: 24413316bfdc5187a6c14c2baff4f4e7 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..5df3a64eb 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: 0d5c250090705a51723f159d36ae59dc 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..f8ea56c91 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: fab9c233bb124602e156c1cf12809ffd 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..725a371cf 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: b6355a7734ba0457c44987c85f261064 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/touch.meta b/Runtime/wechat-default/unity-sdk/touch.meta index 5e0f63569..dc55b2f25 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: a55ea425aab2d2ba68658b485439aa0b 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..a61da2458 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: 15eb9de54e04f3b394549070c79986c7 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..d4a103b57 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: e1ccff77f4f2fa820c249c0dd8fd8eee 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..6f8414745 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: 429430c20ad4f07706fb5bbb9a401e34 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..422d9b9a5 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: 6ebd2246d9f85f94d709e1915534e0d1 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..e877e2783 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: 2b5f69bfd465c09025087e8d9415b9db 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..e29c96269 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: 1c5d25a5b5b67acd9d429cced6824a61 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/unity-sdk/video.meta b/Runtime/wechat-default/unity-sdk/video.meta index 9a0f158b8..f710a07bd 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: 5cb81cb6ae8d3dd9b829f515e2a2149c 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..acbce8925 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: 33538b51b41d1c1bb15b7e3b46f1268f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/wasmcode.meta b/Runtime/wechat-default/wasmcode.meta index 385051c8f..4dbf4c40f 100644 --- a/Runtime/wechat-default/wasmcode.meta +++ b/Runtime/wechat-default/wasmcode.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 35a601e53c9e15487be956df49fbb317 +guid: a78745d2ab5bae8de55bca28db4410db folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/wasmcode/game.js.meta b/Runtime/wechat-default/wasmcode/game.js.meta index 3e997cd8b..4b1e049ec 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: 648d3b17d289c94bd57f2420e416bf41 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/weapp-adapter.js.meta b/Runtime/wechat-default/weapp-adapter.js.meta index f5e4fc61e..0e25e3815 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: d880a94e1915a53df538c7cd667e2a0d DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/wechat-default/workers.meta b/Runtime/wechat-default/workers.meta index afb4062c3..1ed86cae7 100644 --- a/Runtime/wechat-default/workers.meta +++ b/Runtime/wechat-default/workers.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3e862c14cabeade40e53ac32d5011a75 +guid: 314c2bd7f95c7c66fd62d7ae16f4708c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/wechat-default/workers/response.meta b/Runtime/wechat-default/workers/response.meta index 239f34c0b..5d09ad328 100644 --- a/Runtime/wechat-default/workers/response.meta +++ b/Runtime/wechat-default/workers/response.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fd93c94282bbc01d424b2680fb68be66 +guid: 08c3fd8fcd230b00fc45d18a7c5aa53e 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..b35634c3b 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: 88ebecaa6ccd1c91de4ab18e1c652030 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