From 9f49f84a5054545d1d89622e96d38e6105499431 Mon Sep 17 00:00:00 2001 From: nebulaliu Date: Mon, 2 Mar 2026 17:23:50 +0800 Subject: [PATCH] Auto-publish. --- .../PCHPBuildPreProcessor.cs.meta | 2 +- Editor/PCHighPerformance/PCHPDebugHelper.cs | 216 ++++++++++++++++++ .../PCHighPerformance/PCHPDebugHelper.cs.meta | 7 + .../README_AutoInjection.md.meta | 2 +- Editor/PCHighPerformance/TROUBLESHOOTING.md | 196 ++++++++++++++++ .../PCHighPerformance/TROUBLESHOOTING.md.meta | 7 + .../Templates/EmbeddedAppletSDK.cs | 29 ++- .../Templates/EmbeddedAppletSDK.cs.meta | 2 +- Editor/PCHighPerformance/WXPCSettingHelper.cs | 6 + Editor/WXPluginVersion.cs | 2 +- Editor/wx-editor.dll | Bin 246272 -> 246272 bytes Editor/wx-editor.xml.meta | 2 +- Runtime/Plugins/wx-perf.dll | Bin 55808 -> 55808 bytes Runtime/Plugins/wx-runtime-editor.dll | Bin 269824 -> 269824 bytes Runtime/Plugins/wx-runtime-editor.xml.meta | 2 +- Runtime/Plugins/wx-runtime.dll | Bin 245760 -> 245760 bytes Runtime/Plugins/wx-runtime.xml.meta | 2 +- .../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 +- 175 files changed, 624 insertions(+), 167 deletions(-) create mode 100644 Editor/PCHighPerformance/PCHPDebugHelper.cs create mode 100644 Editor/PCHighPerformance/PCHPDebugHelper.cs.meta create mode 100644 Editor/PCHighPerformance/TROUBLESHOOTING.md create mode 100644 Editor/PCHighPerformance/TROUBLESHOOTING.md.meta diff --git a/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs.meta b/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs.meta index 2bf43d3df..468448c07 100644 --- a/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs.meta +++ b/Editor/PCHighPerformance/PCHPBuildPreProcessor.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d77519b22941383a15741d248fbe4ebc +guid: 2122deed9a04170fd05ce194b6e6d967 DefaultImporter: externalObjects: {} userData: diff --git a/Editor/PCHighPerformance/PCHPDebugHelper.cs b/Editor/PCHighPerformance/PCHPDebugHelper.cs new file mode 100644 index 000000000..aeadb0ada --- /dev/null +++ b/Editor/PCHighPerformance/PCHPDebugHelper.cs @@ -0,0 +1,216 @@ +using UnityEngine; +using UnityEditor; +using UnityEditor.SceneManagement; +using System.Linq; + +namespace WeChatWASM +{ + /// + /// PC高性能小游戏调试工具 + /// + public class PCHPDebugHelper + { + [MenuItem("微信小游戏 / PC高性能调试 / 检查SDK注入状态", false, 100)] + public static void CheckSDKInjectionStatus() + { + var report = new System.Text.StringBuilder(); + report.AppendLine("========== PC高性能小游戏 SDK 注入检查 ==========\n"); + + // 1. 检查构建场景 + var enabledScenes = EditorBuildSettings.scenes.Where(s => s.enabled).ToArray(); + report.AppendLine($"[构建场景] 启用的场景数: {enabledScenes.Length}"); + + if (enabledScenes.Length == 0) + { + report.AppendLine(" ⚠️ 警告: 没有启用的场景,SDK 无法注入"); + } + else + { + report.AppendLine($" ✅ 首场景: {enabledScenes[0].path}"); + + // 打开首场景检查 + var scene = EditorSceneManager.OpenScene(enabledScenes[0].path, OpenSceneMode.Single); + var sdkObject = GameObject.Find("EmbeddedAppletSDK"); + + if (sdkObject == null) + { + report.AppendLine(" ❌ 场景中未找到 EmbeddedAppletSDK GameObject"); + report.AppendLine(" 提示: 需要先执行一次构建才会注入"); + } + else + { + report.AppendLine($" ✅ 找到 SDK GameObject: {sdkObject.name}"); + + var component = sdkObject.GetComponent(); + if (component == null) + { + report.AppendLine(" ⚠️ GameObject 上没有挂载脚本组件"); + } + else + { + report.AppendLine($" ✅ 挂载的脚本: {component.GetType().Name}"); + } + } + } + + // 2. 检查脚本文件 + report.AppendLine("\n[脚本文件检查]"); + string scriptPath = System.IO.Path.Combine(Application.dataPath, "Scripts/EmbeddedAppletSDK.cs"); + + if (System.IO.File.Exists(scriptPath)) + { + report.AppendLine($" ✅ 用户项目中存在 EmbeddedAppletSDK.cs"); + report.AppendLine($" 路径: {scriptPath}"); + } + else + { + report.AppendLine(" ❌ 用户项目中不存在 EmbeddedAppletSDK.cs"); + report.AppendLine(" 提示: 首次构建时会自动复制模板文件"); + } + + // 3. 检查模板文件 + report.AppendLine("\n[SDK 模板文件检查]"); + string templatePath = System.IO.Path.Combine( + Application.dataPath, + "WX-WASM-SDK-V2/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs" + ); + + if (System.IO.File.Exists(templatePath)) + { + report.AppendLine($" ✅ SDK 模板文件存在"); + } + else + { + report.AppendLine($" ❌ SDK 模板文件丢失"); + report.AppendLine($" 路径: {templatePath}"); + } + + // 4. 检查类型是否加载 + report.AppendLine("\n[类型加载检查]"); + var sdkType = System.Type.GetType("EmbeddedAppletSDK"); + if (sdkType != null) + { + report.AppendLine($" ✅ EmbeddedAppletSDK 类型已加载"); + report.AppendLine($" 程序集: {sdkType.Assembly.GetName().Name}"); + } + else + { + report.AppendLine(" ❌ EmbeddedAppletSDK 类型未加载"); + report.AppendLine(" 可能原因: 脚本文件不存在或编译错误"); + } + + report.AppendLine("\n=".PadRight(50, '=')); + + // 显示报告 + Debug.Log(report.ToString()); + EditorUtility.DisplayDialog("SDK 注入状态检查", report.ToString(), "确定"); + } + + [MenuItem("微信小游戏 / PC高性能调试 / 查看导出路径", false, 101)] + public static void ShowExportPath() + { + string configPath = System.IO.Path.Combine( + Application.dataPath, + "WX-WASM-SDK-V2/Editor/PCHighPerformance/PCHPConfig.json" + ); + + if (!System.IO.File.Exists(configPath)) + { + EditorUtility.DisplayDialog("提示", "配置文件不存在,请先在面板中设置导出路径", "确定"); + return; + } + + try + { + var json = System.IO.File.ReadAllText(configPath); + var config = JsonUtility.FromJson(json); + + string exportPath; + if (string.IsNullOrEmpty(config.exportPath)) + { + exportPath = "未设置"; + } + else if (System.IO.Path.IsPathRooted(config.exportPath)) + { + exportPath = config.exportPath; + } + else + { + string projectRoot = System.IO.Path.GetFullPath(Application.dataPath + "/../"); + exportPath = System.IO.Path.Combine(projectRoot, config.exportPath); + } + + string message = $"AppID: {config.appId}\n"; + message += $"项目名: {(string.IsNullOrEmpty(config.projectName) ? "使用Unity项目名" : config.projectName)}\n"; + message += $"导出路径: {exportPath}\n\n"; + + if (System.IO.Directory.Exists(exportPath)) + { + message += "✅ 目录存在"; + + // 检查是否有 .exe 文件 + var exeFiles = System.IO.Directory.GetFiles(exportPath, "*.exe"); + if (exeFiles.Length > 0) + { + message += $"\n找到 {exeFiles.Length} 个可执行文件"; + } + } + else + { + message += "⚠️ 目录不存在(尚未构建)"; + } + + EditorUtility.DisplayDialog("导出路径信息", message, "确定"); + } + catch (System.Exception e) + { + EditorUtility.DisplayDialog("错误", $"读取配置失败: {e.Message}", "确定"); + } + } + + [MenuItem("微信小游戏 / PC高性能调试 / 打开导出目录", false, 102)] + public static void OpenExportDirectory() + { + string configPath = System.IO.Path.Combine( + Application.dataPath, + "WX-WASM-SDK-V2/Editor/PCHighPerformance/PCHPConfig.json" + ); + + if (!System.IO.File.Exists(configPath)) + { + EditorUtility.DisplayDialog("提示", "配置文件不存在,请先在面板中设置导出路径", "确定"); + return; + } + + try + { + var json = System.IO.File.ReadAllText(configPath); + var config = JsonUtility.FromJson(json); + + string exportPath; + if (System.IO.Path.IsPathRooted(config.exportPath)) + { + exportPath = config.exportPath; + } + else + { + string projectRoot = System.IO.Path.GetFullPath(Application.dataPath + "/../"); + exportPath = System.IO.Path.Combine(projectRoot, config.exportPath); + } + + if (System.IO.Directory.Exists(exportPath)) + { + EditorUtility.RevealInFinder(exportPath); + } + else + { + EditorUtility.DisplayDialog("提示", $"目录不存在:\n{exportPath}", "确定"); + } + } + catch (System.Exception e) + { + EditorUtility.DisplayDialog("错误", $"打开目录失败: {e.Message}", "确定"); + } + } + } +} diff --git a/Editor/PCHighPerformance/PCHPDebugHelper.cs.meta b/Editor/PCHighPerformance/PCHPDebugHelper.cs.meta new file mode 100644 index 000000000..d7b44c8b9 --- /dev/null +++ b/Editor/PCHighPerformance/PCHPDebugHelper.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6a7246fe94915622334f697185600414 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/PCHighPerformance/README_AutoInjection.md.meta b/Editor/PCHighPerformance/README_AutoInjection.md.meta index a5481ab3c..57a0f07a6 100644 --- a/Editor/PCHighPerformance/README_AutoInjection.md.meta +++ b/Editor/PCHighPerformance/README_AutoInjection.md.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a0010f8ac98e6b288b2efbec568a4ad1 +guid: 53f2eae61bb70a2f7f86b2085d966861 DefaultImporter: externalObjects: {} userData: diff --git a/Editor/PCHighPerformance/TROUBLESHOOTING.md b/Editor/PCHighPerformance/TROUBLESHOOTING.md new file mode 100644 index 000000000..631cf8804 --- /dev/null +++ b/Editor/PCHighPerformance/TROUBLESHOOTING.md @@ -0,0 +1,196 @@ +# PC高性能小游戏 - 问题排查指南 + +## 🐛 问题1:设置面板数据被清空 + +### 原因 +`OnLostFocus()` 时机不对,输入框的值可能还未同步到 `formInputData` + +### 解决方案 ✅ +已修复:在 `OnSettingsGUI()` 中添加 `GUI.changed` 检测,每次输入时自动保存 + +```csharp +// OnSettingsGUI() 结尾 +if (GUI.changed) +{ + SaveData(); // 实时保存 +} +``` + +--- + +## 🐛 问题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` + - 搜索关键字: `[EmbeddedAppletSDK]` 或 `DllNotFoundException` + +--- + +#### 2. GameObject 未注入 (10%) +**症状**:构建后场景中没有 `EmbeddedAppletSDK` 对象 + +**验证**:使用调试工具 +``` +Unity 菜单 → 微信小游戏 → PC高性能调试 → 检查SDK注入状态 +``` + +**可能的问题**: +- ❌ Build Settings 中没有启用场景 +- ❌ 构建前 `PCHPBuildPreProcessor` 未执行 +- ❌ 脚本编译错误导致组件未挂载 + +**解决**: +1. 确保 Build Settings 有至少一个启用场景 +2. 查看 Console 日志: + ``` + [PC高性能小游戏] 开始预处理构建... + [PC高性能小游戏] 已在 XXX 中创建 SDK 对象并添加组件 + ``` + +--- + +#### 3. MessageBox 被禁用 (少见 <5%) +**症状**:有日志输出但没有弹窗 + +**验证**: +- 查看 Unity Editor Console 是否有 `[EmbeddedAppletSDK]` 日志 +- 运行 .exe 时查看 Player.log + +**临时禁用弹窗**(调试用): +```csharp +// 修改 Templates/EmbeddedAppletSDK.cs +private void ShowInfo(string message) +{ + Debug.Log($"[EmbeddedAppletSDK] {message}"); + // MessageBox(IntPtr.Zero, message, "Info", 0x40); // 注释掉 +} +``` + +--- + +## 🔍 调试步骤(按顺序) + +### Step 1: 检查 SDK 注入状态 +``` +Unity 菜单 → 微信小游戏 → PC高性能调试 → 检查SDK注入状态 +``` + +✅ 正常输出示例: +``` +[构建场景] 启用的场景数: 1 + ✅ 首场景: Assets/Scenes/Main.unity + ✅ 找到 SDK GameObject: EmbeddedAppletSDK + ✅ 挂载的脚本: EmbeddedAppletSDK + +[脚本文件检查] + ✅ 用户项目中存在 EmbeddedAppletSDK.cs + +[类型加载检查] + ✅ EmbeddedAppletSDK 类型已加载 +``` + +--- + +### Step 2: 检查导出路径 +``` +Unity 菜单 → 微信小游戏 → PC高性能调试 → 查看导出路径 +``` + +确认: +- ✅ 目录存在 +- ✅ 有 .exe 文件 + +--- + +### Step 3: 运行 .exe 并查看日志 + +**日志位置**: +``` +Windows: %APPDATA%\..\LocalLow\YourCompany\YourProduct\Player.log +Mac: ~/Library/Logs/Company Name/Product Name/Player.log +``` + +**搜索关键字**: +``` +[EmbeddedAppletSDK] +DllNotFoundException +InitEmbeddedGameSDK +``` + +**正常日志**: +``` +[EmbeddedAppletSDK] ========== Awake 被调用 ========== +[EmbeddedAppletSDK] GameObject 名称: EmbeddedAppletSDK +[EmbeddedAppletSDK] ========== 开始初始化 ========== +[EmbeddedAppletSDK] 当前工作目录: C:\...\YourBuild +[EmbeddedAppletSDK] Step 1: 调用 InitEmbeddedGameSDK +[EmbeddedAppletSDK] 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 版本是否匹配 | +| `找不到 EmbeddedAppletSDK 类型` | 脚本未编译 | 检查编译错误或重新导入 | +| `GetActiveWindow 返回空句柄` | 窗口未创建 | 延迟初始化或检查 Unity Player 设置 | + +--- + +## 🚀 最小验证示例 + +创建一个最简单的测试场景: + +1. **创建新场景** `TestSDK.unity` +2. **添加到 Build Settings** 并设为首场景 +3. **构建一次** → 应该自动注入 SDK +4. **检查场景** → 应该有 `EmbeddedAppletSDK` GameObject +5. **运行 .exe**(确保 DLL 存在)→ 应该有弹窗 + +如果这个流程失败,提供 Console 和 Player.log 完整日志。 diff --git a/Editor/PCHighPerformance/TROUBLESHOOTING.md.meta b/Editor/PCHighPerformance/TROUBLESHOOTING.md.meta new file mode 100644 index 000000000..d1527e389 --- /dev/null +++ b/Editor/PCHighPerformance/TROUBLESHOOTING.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4054b4619dcaded089631880a4d67b43 +DefaultImporter: +externalObjects: {} +userData: +assetBundleName: +assetBundleVariant: \ No newline at end of file diff --git a/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs b/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs index c787990a0..c149ecba4 100644 --- a/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs +++ b/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs @@ -88,14 +88,20 @@ public class EmbeddedAppletSDK : MonoBehaviour private void Awake() { + Debug.Log("[EmbeddedAppletSDK] ========== Awake 被调用 =========="); + Debug.Log($"[EmbeddedAppletSDK] GameObject 名称: {gameObject.name}"); + Debug.Log($"[EmbeddedAppletSDK] 场景名称: {UnityEngine.SceneManagement.SceneManager.GetActiveScene().name}"); + if (instance != null && instance != this) { + Debug.LogWarning("[EmbeddedAppletSDK] 检测到重复实例,销毁当前对象"); Destroy(gameObject); return; } instance = this; DontDestroyOnLoad(gameObject); + Debug.Log("[EmbeddedAppletSDK] 单例创建成功,已设置 DontDestroyOnLoad"); // 初始化SDK Initialize(); @@ -130,10 +136,16 @@ public class EmbeddedAppletSDK : MonoBehaviour return; } + Debug.Log("[EmbeddedAppletSDK] ========== 开始初始化 =========="); + Debug.Log($"[EmbeddedAppletSDK] 当前工作目录: {System.IO.Directory.GetCurrentDirectory()}"); + Debug.Log($"[EmbeddedAppletSDK] DLL 搜索路径: {DLL_NAME}"); + try { // 1. 初始化SDK + Debug.Log("[EmbeddedAppletSDK] Step 1: 调用 InitEmbeddedGameSDK"); ShowInfo("开始调用 InitEmbeddedGameSDK..."); + if (!InitEmbeddedGameSDK()) { ShowError("InitEmbeddedGameSDK 返回 false"); @@ -145,17 +157,22 @@ public class EmbeddedAppletSDK : MonoBehaviour // asyncMsgHandler = HandleAsyncMessage; // RegisterAsyncMsgHandler(asyncMsgHandler); // ShowInfo("RegisterAsyncMsgHandler 成功"); + Debug.Log("[EmbeddedAppletSDK] Step 2: RegisterAsyncMsgHandler 已跳过"); ShowInfo("RegisterAsyncMsgHandler 已跳过"); - // 3. 建立连接 (暂时屏蔽) + // 3. 建立连接 + Debug.Log("[EmbeddedAppletSDK] Step 3: 调用 EstablishConnection"); if (!EstablishConnection()) { ShowError("EstablishConnection 返回 false"); - IsConnected = true; + IsConnected = false; return; } + IsConnected = true; + ShowInfo("EstablishConnection 成功"); // 4. 获取窗口句柄并初始化游戏窗口 + Debug.Log("[EmbeddedAppletSDK] Step 4: 获取窗口句柄"); WindowHandle = GetActiveWindow(); if (WindowHandle == IntPtr.Zero) { @@ -164,6 +181,7 @@ public class EmbeddedAppletSDK : MonoBehaviour } ShowInfo($"获取窗口句柄成功: 0x{WindowHandle.ToInt64():X}"); + Debug.Log("[EmbeddedAppletSDK] Step 5: 调用 InitGameWindow"); if (!InitGameWindow((ulong)WindowHandle.ToInt64())) { ShowError("InitGameWindow 返回 false"); @@ -173,18 +191,25 @@ public class EmbeddedAppletSDK : MonoBehaviour IsInitialized = true; ShowInfo("SDK 完全初始化成功!"); + Debug.Log("[EmbeddedAppletSDK] ========== 初始化完成 =========="); } catch (DllNotFoundException e) { ShowError($"找不到DLL: {e.Message}"); + Debug.LogError($"[EmbeddedAppletSDK] DLL 加载失败,请确保 {DLL_NAME} 在以下位置之一:"); + Debug.LogError($" - 与 .exe 同级目录"); + Debug.LogError($" - System32 目录"); + Debug.LogError($" - PATH 环境变量包含的路径"); } catch (EntryPointNotFoundException e) { ShowError($"找不到函数入口: {e.Message}"); + Debug.LogError($"[EmbeddedAppletSDK] 函数入口点错误,可能是 DLL 版本不匹配"); } catch (Exception e) { ShowError($"初始化异常: {e.Message}\n{e.StackTrace}"); + Debug.LogError($"[EmbeddedAppletSDK] 未知异常: {e}"); } } diff --git a/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs.meta b/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs.meta index 00c602e04..06aa8e3ea 100644 --- a/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs.meta +++ b/Editor/PCHighPerformance/Templates/EmbeddedAppletSDK.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f4250fca5eb82f5bba38cf7962cf24d8 +guid: 71ce52a06c0e3d687b208b9d971a8ddf DefaultImporter: externalObjects: {} userData: diff --git a/Editor/PCHighPerformance/WXPCSettingHelper.cs b/Editor/PCHighPerformance/WXPCSettingHelper.cs index 81749ae51..a0d853e55 100644 --- a/Editor/PCHighPerformance/WXPCSettingHelper.cs +++ b/Editor/PCHighPerformance/WXPCSettingHelper.cs @@ -70,6 +70,12 @@ namespace WeChatWASM } EditorGUILayout.EndScrollView(); + + // 检测 GUI 变化并自动保存 + if (GUI.changed) + { + SaveData(); + } } public void OnBuildButtonGUI(EditorWindow window) diff --git a/Editor/WXPluginVersion.cs b/Editor/WXPluginVersion.cs index 1621f8d54..09bad45de 100644 --- a/Editor/WXPluginVersion.cs +++ b/Editor/WXPluginVersion.cs @@ -2,7 +2,7 @@ namespace WeChatWASM { public class WXPluginVersion { - public static string pluginVersion = "202603020746"; // 这一行不要改他,导出的时候会自动替换 + public static string pluginVersion = "202603020923"; // 这一行不要改他,导出的时候会自动替换 } public class WXPluginConf diff --git a/Editor/wx-editor.dll b/Editor/wx-editor.dll index 102c85cd1222985d8ee8191864bf1e6acac37ba1..b0d58cd8b672f8a44ec49621867a2288b76f3f6b 100644 GIT binary patch delta 35628 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 diff --git a/Editor/wx-editor.xml.meta b/Editor/wx-editor.xml.meta index b518cbfbd..62d1fc4fe 100644 --- a/Editor/wx-editor.xml.meta +++ b/Editor/wx-editor.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0d0fc614a9122f1bfd17494548985ae7 +guid: 93076b73e561d5f8d7630483ac2c400f DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/Plugins/wx-perf.dll b/Runtime/Plugins/wx-perf.dll index cec6c8716a25b91b0d8cec9aa0c26aca61f86bbc..f6f455b5514f3a4cbd6677c2fd47f035c8afd309 100644 GIT binary patch delta 37 vcmV+=0NVe6v;%;&1CWRU_ExcqqQnqbJaQ21eC|lCCI^mh_q$!QJjKKmMz0a9 delta 37 vcmV+=0NVe6v;%;&1CWRUIY6}IBGWNv6|>SST* rW?*D6UHcHTq6IN3YZ(|AI-NTAd@TOwymw!o+{Q8+-t8@im}{Z|uD~(6 delta 172 zcmZqJBhau%U_u9zxkF=DYZqf{7t_`*=HDDD#-;{N2Ci-{x`w8%hPoyOPR6>9#s+4( zPL8f_22Li9hAsvM+gEZj$L&zDFf%YUa5gm7H8OH^(=~B&b<}k-cXQS?ayBq9b}}?} rcC<8}u6>AE(SjJ2wG0dlJN15<{19H?vDR&=ig)i`)9o#Xm}{Z|N1-s+ diff --git a/Runtime/Plugins/wx-runtime-editor.xml.meta b/Runtime/Plugins/wx-runtime-editor.xml.meta index b6cc4d398..0bcba4df9 100644 --- a/Runtime/Plugins/wx-runtime-editor.xml.meta +++ b/Runtime/Plugins/wx-runtime-editor.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c3e43a5c48cb98d01cd83e61b163fa20 +guid: 81094194bd59fd746df8fba9e6165f6b DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/Plugins/wx-runtime.dll b/Runtime/Plugins/wx-runtime.dll index 2c6d3383fe8807e1ccbaa83e3f871bcbe76810f0..59591f8303f71af7abfddfcf3abb2c96e0f176c2 100644 GIT binary patch delta 47 zcmZo@;BRQ)pU}bdF08SuwTrQ}i)m{YvsAi(`Kx_1S9G{J?};~xn^PN_y?skMvrhy7 D)J_ws delta 47 zcmZo@;BRQ)pU}Z%=+M~J+Qrz~#k94HSt?z?jeWh(>hpr`Te