mirror of
https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git
synced 2026-04-22 01:35:56 +08:00
Auto-publish.
This commit is contained in:
parent
dd763bcb06
commit
d179eb7782
@ -9,156 +9,191 @@ namespace WeChatWASM
|
||||
{
|
||||
/// <summary>
|
||||
/// PC高性能小游戏构建预处理器
|
||||
/// 负责在构建前向首场景注入 WXPCHPInitScript
|
||||
///
|
||||
/// 注入策略(优先级从高到低):
|
||||
/// 1. 开发者已在场景中手动挂载 WXPCHPInitScript → 跳过注入
|
||||
/// 2. WX_PCHP_ENABLED 宏已定义 → RuntimeInitializeOnLoadMethod 会自动创建,无需注入
|
||||
/// 3. 走转换工具链但未手动挂载 → 兜底注入到首场景(路径A 兼容)
|
||||
///
|
||||
/// 触发条件:
|
||||
/// - 仅 Standalone (Windows/macOS) 构建时生效
|
||||
/// - 未定义 WX_PCHP_ENABLED 时自动添加宏到 ScriptingDefineSymbols
|
||||
/// </summary>
|
||||
public class PCHPBuildPreProcessor : IPreprocessBuildWithReport
|
||||
{
|
||||
// SDK 脚本名称常量
|
||||
private const string SDK_CLASS_NAME = "WeChatWASM.WXPCHPInitScript";
|
||||
private const string SDK_GAMEOBJECT_NAME = "WXPCHPInitScript";
|
||||
private const string PCHP_DEFINE_SYMBOL = "WX_PCHP_ENABLED";
|
||||
|
||||
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 &&
|
||||
|
||||
// 只处理 Standalone 构建
|
||||
if (buildTarget != BuildTarget.StandaloneWindows64 &&
|
||||
buildTarget != BuildTarget.StandaloneOSX)
|
||||
{
|
||||
Debug.LogWarning($"[PC高性能小游戏] 当前平台 {buildTarget} 不是 Windows/Mac,跳过预处理");
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Log("[PC高性能小游戏] 开始预处理构建...");
|
||||
Debug.Log("[PC高性能模式] PCHPBuildPreProcessor 开始预处理");
|
||||
|
||||
// 确保 WX_PCHP_ENABLED 宏已定义
|
||||
EnsurePCHPDefineSymbol();
|
||||
|
||||
// 检查 SDK 脚本是否存在
|
||||
var sdkType = FindTypeInAllAssemblies(SDK_CLASS_NAME);
|
||||
if (sdkType == null)
|
||||
{
|
||||
Debug.LogWarning("[PC高性能模式] 未找到 WXPCHPInitScript 类型,跳过注入(可能需要重新编译)");
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查首场景是否已有 WXPCHPInitScript 组件
|
||||
if (IsSDKAlreadyInFirstScene())
|
||||
{
|
||||
Debug.Log("[PC高性能模式] 首场景中已存在 WXPCHPInitScript,跳过注入");
|
||||
return;
|
||||
}
|
||||
|
||||
// RuntimeInitializeOnLoadMethod 会自动创建实例,仅在路径A兼容模式下才注入
|
||||
// 判断依据:如果当前是从微信小游戏转换工具链触发的构建(build target 此前是 WebGL/WeixinMiniGame)
|
||||
if (WXPCHPBuildHelper.IsPCHighPerformanceEnabled())
|
||||
{
|
||||
Debug.Log("[PC高性能模式] 转换工具链模式,兜底注入首场景");
|
||||
InjectSDKToFirstScene(sdkType);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("[PC高性能模式] 非转换工具链模式,依赖 RuntimeInitializeOnLoadMethod 自动初始化");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 确保 Standalone 平台的 ScriptingDefineSymbols 包含 WX_PCHP_ENABLED
|
||||
/// </summary>
|
||||
private void EnsurePCHPDefineSymbol()
|
||||
{
|
||||
var targetGroup = BuildTargetGroup.Standalone;
|
||||
#if UNITY_2023_1_OR_NEWER
|
||||
var namedTarget = UnityEditor.Build.NamedBuildTarget.Standalone;
|
||||
var defines = PlayerSettings.GetScriptingDefineSymbols(namedTarget);
|
||||
#else
|
||||
var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup);
|
||||
#endif
|
||||
|
||||
if (!defines.Contains(PCHP_DEFINE_SYMBOL))
|
||||
{
|
||||
var newDefines = string.IsNullOrEmpty(defines)
|
||||
? PCHP_DEFINE_SYMBOL
|
||||
: defines + ";" + PCHP_DEFINE_SYMBOL;
|
||||
|
||||
#if UNITY_2023_1_OR_NEWER
|
||||
PlayerSettings.SetScriptingDefineSymbols(namedTarget, newDefines);
|
||||
#else
|
||||
PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, newDefines);
|
||||
#endif
|
||||
Debug.Log($"[PC高性能模式] 已自动添加 {PCHP_DEFINE_SYMBOL} 到 Standalone ScriptingDefineSymbols");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查首场景是否已包含 WXPCHPInitScript 组件
|
||||
/// </summary>
|
||||
private bool IsSDKAlreadyInFirstScene()
|
||||
{
|
||||
var firstScenePath = GetFirstEnabledScene();
|
||||
if (string.IsNullOrEmpty(firstScenePath)) return false;
|
||||
|
||||
var currentScenes = EditorSceneManager.GetSceneManagerSetup();
|
||||
|
||||
try
|
||||
{
|
||||
Debug.Log("[PC高性能小游戏] → 步骤1: 检查 WXPCHPInitScript 脚本是否存在");
|
||||
EnsureSDKScriptExists();
|
||||
var scene = EditorSceneManager.OpenScene(firstScenePath, OpenSceneMode.Single);
|
||||
var existing = GameObject.Find(SDK_GAMEOBJECT_NAME);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在所有程序集中查找类型
|
||||
/// </summary>
|
||||
private System.Type FindTypeInAllAssemblies(string typeName)
|
||||
{
|
||||
foreach (var assembly in System.AppDomain.CurrentDomain.GetAssemblies())
|
||||
{
|
||||
var type = assembly.GetType(typeName);
|
||||
if (type != null)
|
||||
if (existing != null)
|
||||
{
|
||||
return type;
|
||||
// 检查是否真的挂载了正确的组件
|
||||
var sdkType = FindTypeInAllAssemblies(SDK_CLASS_NAME);
|
||||
if (sdkType != null && existing.GetComponent(sdkType) != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 确保 WXPCHPInitScript 脚本存在
|
||||
/// </summary>
|
||||
private void EnsureSDKScriptExists()
|
||||
{
|
||||
var sdkType = FindTypeInAllAssemblies(SDK_CLASS_NAME);
|
||||
if (sdkType != null)
|
||||
return false;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Debug.Log($"[PC高性能小游戏] ✅ WXPCHPInitScript 脚本已加载 (程序集: {sdkType.Assembly.GetName().Name})");
|
||||
return;
|
||||
RestoreScenes(currentScenes);
|
||||
}
|
||||
|
||||
// 脚本应该在 SDK Runtime 目录,如果找不到说明 SDK 安装有问题
|
||||
Debug.LogError("[PC高性能小游戏] ❌ 找不到 WXPCHPInitScript 类型");
|
||||
Debug.LogError("[PC高性能小游戏] 请确保 WX-WASM-SDK-V2 已正确安装");
|
||||
throw new BuildFailedException("[PC高性能小游戏] 缺少 WXPCHPInitScript 脚本,请检查 SDK 安装");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 向第一个启用的场景注入 SDK GameObject
|
||||
/// 向首场景注入 SDK(兜底方式)
|
||||
/// </summary>
|
||||
private void InjectSDKToFirstScene()
|
||||
private void InjectSDKToFirstScene(System.Type sdkType)
|
||||
{
|
||||
var firstScenePath = GetFirstEnabledScene();
|
||||
if (string.IsNullOrEmpty(firstScenePath))
|
||||
{
|
||||
Debug.LogWarning("[PC高性能小游戏] 没有找到启用的场景,跳过注入");
|
||||
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 对象");
|
||||
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 assemblyName = sdkType.Assembly.GetName().Name;
|
||||
if (assemblyName.Contains("Editor"))
|
||||
{
|
||||
Debug.LogError("[PC高性能模式] WXPCHPInitScript 在 Editor 程序集中,无法用于 Runtime!");
|
||||
throw new BuildFailedException("[PC高性能模式] WXPCHPInitScript 必须在 Runtime 程序集");
|
||||
}
|
||||
|
||||
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 组件");
|
||||
}
|
||||
sdkObject.AddComponent(sdkType);
|
||||
Debug.Log($"[PC高性能模式] ✅ 已在 [{scene.name}] 注入 {SDK_GAMEOBJECT_NAME}");
|
||||
|
||||
EditorSceneManager.MarkSceneDirty(scene);
|
||||
EditorSceneManager.SaveScene(scene);
|
||||
RestoreScenes(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 GetFirstEnabledScene()
|
||||
{
|
||||
foreach (var scene in EditorBuildSettings.scenes)
|
||||
{
|
||||
if (scene.enabled)
|
||||
{
|
||||
return scene.path;
|
||||
}
|
||||
if (scene.enabled) return scene.path;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
286
Editor/PCHighPerformance/README.md
Normal file
286
Editor/PCHighPerformance/README.md
Normal file
@ -0,0 +1,286 @@
|
||||
# PC 高性能小游戏开发指南
|
||||
|
||||
## 目录
|
||||
|
||||
- [架构概览](#架构概览)
|
||||
- [两条接入路径](#两条接入路径)
|
||||
- [文件结构](#文件结构)
|
||||
- [宏开关机制](#宏开关机制)
|
||||
- [初始化机制](#初始化机制)
|
||||
- [构建流程](#构建流程)
|
||||
- [通信协议](#通信协议)
|
||||
- [问题排查](#问题排查)
|
||||
- [调试工具](#调试工具)
|
||||
- [更新日志](#更新日志)
|
||||
|
||||
---
|
||||
|
||||
## 架构概览
|
||||
|
||||
```
|
||||
C# (Unity) ←→ direct_applet_sdk.dll ←→ 微信内核 ←→ 基础库
|
||||
```
|
||||
|
||||
| 模块 | 职责 |
|
||||
|------|------|
|
||||
| `WXPCHPInitScript` | MonoBehaviour,运行时核心——DLL P/Invoke、消息收发、回调调度 |
|
||||
| `WXPCHighPerformanceManager` | 门面类,提供类似 `wx.xxx()` 的上层 API |
|
||||
| `PCHPBuildPreProcessor` | 构建预处理器,自动管理宏定义和场景注入(兜底) |
|
||||
| `WXPCHPBuildHelper` | 路径A 构建配置助手(转换工具链集成) |
|
||||
| `WXPCHPWindow` | Editor 窗口 UI + 宏开关菜单 |
|
||||
| `WXPCSettingHelper` | 路径B 构建设置管理(独立窗口) |
|
||||
| `WXApkgPacker` | wxapkg 打包工具 |
|
||||
|
||||
---
|
||||
|
||||
## 两条接入路径
|
||||
|
||||
```
|
||||
路径 A: "转换工具链" ← 走 WX-WASM-SDK 转换面板,项目本身是小游戏工程
|
||||
路径 B: "原生接入" ← 项目本身就是 Standalone,只想接 PC 高性能能力
|
||||
```
|
||||
|
||||
| 维度 | 路径 A(转换工具链) | 路径 B(原生接入) |
|
||||
|------|---------------------|-------------------|
|
||||
| **宏定义** | 转换工具/PreProcessor 自动添加 `WX_PCHP_ENABLED` | 开发者通过菜单一键开启,或手动添加 |
|
||||
| **Build Target** | WebGL/WeixinMiniGame → 临时切 Standalone → 切回 | 始终 Standalone,不切换 |
|
||||
| **初始化方式** | `RuntimeInitializeOnLoadMethod` 自动 + PreProcessor 兜底注入 | `RuntimeInitializeOnLoadMethod` 自动,或开发者手动挂载 |
|
||||
| **Editor 入口** | "微信小游戏 → 生成并转换" 面板 | "微信小游戏 → 转换PC高性能模式" 独立窗口 |
|
||||
| **构建后** | `RestoreToMiniGamePlatform()` 恢复平台 | 不恢复,保持 Standalone |
|
||||
| **多平台兼容** | `WX_PCHP_ENABLED` 不在 WebGL 下定义,无干扰 | `WX_PCHP_ENABLED` 只在 Standalone 下定义,Android/iOS 不受影响 |
|
||||
|
||||
---
|
||||
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
WX-WASM-SDK-V2/
|
||||
├── Editor/PCHighPerformance/
|
||||
│ ├── PCHPBuildPreProcessor.cs # 构建预处理器(宏管理 + 兜底注入)
|
||||
│ ├── WXPCHPBuildHelper.cs # 路径A 构建配置助手
|
||||
│ ├── WXPCHPWindow.cs # 编辑器窗口 + WX_PCHP_ENABLED 宏开关菜单
|
||||
│ ├── WXPCSettingHelper.cs # 路径B 构建设置管理
|
||||
│ └── WXApkgPacker.cs # wxapkg 打包
|
||||
└── Runtime/
|
||||
└── WXPCHPInitScript.cs # SDK 运行时脚本(整文件 #if WX_PCHP_ENABLED)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 宏开关机制
|
||||
|
||||
### `WX_PCHP_ENABLED` — 总开关
|
||||
|
||||
**作用**:控制 `WXPCHPInitScript.cs` 及 `WXPCHighPerformanceManager` 是否参与编译。
|
||||
|
||||
**未定义时**:Runtime 脚本整文件跳过编译,Android/iOS/WebGL 等平台完全无干扰。
|
||||
|
||||
**定义方式**(三选一):
|
||||
|
||||
| 方式 | 适用场景 |
|
||||
|------|---------|
|
||||
| Editor 菜单:`微信小游戏 → PC高性能模式宏开关` | 路径B,一键切换 |
|
||||
| `PCHPBuildPreProcessor` 自动添加 | 路径A/B,Standalone 构建时自动 |
|
||||
| 手动:`Player Settings → Scripting Define Symbols` 添加 `WX_PCHP_ENABLED` | 任何路径 |
|
||||
|
||||
### `UNITY_STANDALONE_WIN` — 平台细分
|
||||
|
||||
`user32.dll`(`GetActiveWindow`、`MessageBox`)的 P/Invoke 声明被 `#if UNITY_STANDALONE_WIN` 包裹,macOS 构建时不会引入。
|
||||
|
||||
---
|
||||
|
||||
## 初始化机制
|
||||
|
||||
### 三级策略(优先级从高到低)
|
||||
|
||||
| 优先级 | 方式 | 说明 |
|
||||
|--------|------|------|
|
||||
| 1 | **开发者手动挂载** | 场景中已存在 `WXPCHPInitScript` 组件 → `AutoInitialize` 检测到 `Instance != null`,跳过 |
|
||||
| 2 | **`RuntimeInitializeOnLoadMethod`** | 场景加载后自动创建 GameObject 并挂载,零侵入不修改任何场景文件 |
|
||||
| 3 | **构建时注入(兜底)** | `PCHPBuildPreProcessor` 在路径A 转换工具链模式下注入首场景 |
|
||||
|
||||
### 运行时初始化流程
|
||||
|
||||
`WXPCHPInitScript.Initialize()` 在 `Awake` 时触发,5 步串行:
|
||||
|
||||
```
|
||||
InitEmbeddedGameSDK() → 加载 DLL,初始化底层 SDK
|
||||
↓
|
||||
RegisterAsyncMsgHandler() → 注册 C# 静态回调到 DLL(防 GC 回收)
|
||||
↓
|
||||
EstablishConnection() → 建立 Mojo IPC 连接
|
||||
↓
|
||||
GetActiveWindow() → Windows: 获取 HWND / macOS: IntPtr.Zero(DLL 内部处理)
|
||||
↓
|
||||
InitGameWindow(hwnd) → 把窗口句柄传给内核,绑定渲染窗口
|
||||
```
|
||||
|
||||
任何一步失败整个链路中断,Windows 平台会弹 `MessageBox` 提示具体步骤。
|
||||
|
||||
---
|
||||
|
||||
## 构建流程
|
||||
|
||||
### PCHPBuildPreProcessor(构建预处理器)
|
||||
|
||||
**触发条件**:任何 Standalone (Windows/macOS) 构建
|
||||
|
||||
**流程**:
|
||||
|
||||
```
|
||||
构建开始
|
||||
↓
|
||||
① 确保 WX_PCHP_ENABLED 宏已添加到 Standalone ScriptingDefineSymbols
|
||||
↓
|
||||
② 检查 WXPCHPInitScript 类型是否存在
|
||||
├─ 未找到 → 跳过(可能需要宏生效后重新编译)
|
||||
└─ 找到 → 继续
|
||||
↓
|
||||
③ 检查首场景是否已有 WXPCHPInitScript 组件
|
||||
├─ 已有 → 跳过注入(开发者手动挂载的)
|
||||
└─ 没有 → 检查是否为转换工具链模式
|
||||
├─ 是 → 兜底注入到首场景
|
||||
└─ 否 → 依赖 RuntimeInitializeOnLoadMethod 自动初始化
|
||||
```
|
||||
|
||||
### 路径A — 转换工具链构建(WXPCHPBuildHelper)
|
||||
|
||||
由 `WXConvertCore` 在小游戏构建完成后调用,额外步骤:
|
||||
- 构建产物打包为 wxapkg 格式
|
||||
- 构建完成后调用 `RestoreToMiniGamePlatform()` 恢复到 WebGL/WeixinMiniGame
|
||||
|
||||
### 路径B — 独立窗口构建(WXPCSettingHelper)
|
||||
|
||||
通过 `微信小游戏 → 转换PC高性能模式` 菜单打开,特点:
|
||||
- 自动确保 `WX_PCHP_ENABLED` 宏已定义
|
||||
- 不强制注入场景(依赖 `RuntimeInitializeOnLoadMethod`)
|
||||
- 构建完成后 **不恢复平台**,保持 Standalone
|
||||
|
||||
---
|
||||
|
||||
## 通信协议
|
||||
|
||||
### 消息方向
|
||||
|
||||
| type | 方向 | 用途 |
|
||||
|------|------|------|
|
||||
| `"request"` | C# → 内核 | 调用 wx API(showToast、login 等) |
|
||||
| `"event_register"` | C# → 内核 | 订阅事件(onShow、onHide 等) |
|
||||
| `"event_unregister"` | C# → 内核 | 取消事件订阅 |
|
||||
| `"response"` | 内核 → C# | API 回调(success / fail / complete) |
|
||||
| `"event"` | 内核 → C# | 事件推送 |
|
||||
|
||||
### 线程模型
|
||||
|
||||
DLL 回调在非主线程,通过 `ConcurrentQueue` 转到主线程 `Update` 中处理:
|
||||
|
||||
```
|
||||
DLL 线程: HandleAsyncMessage → 反序列化 → _messageQueue.Enqueue()
|
||||
主线程: Update → ProcessMessageQueue → ProcessResponse → 触发回调
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 问题排查
|
||||
|
||||
### 快速检查清单
|
||||
|
||||
- [ ] `Player Settings → Scripting Define Symbols` 包含 `WX_PCHP_ENABLED`
|
||||
- [ ] Build Settings 中有至少一个启用的场景
|
||||
- [ ] 导出目录包含 `.exe` 和 `direct_applet_sdk.dll`(同级)
|
||||
- [ ] 运行 .exe 后 Player.log 有 `[WXPCHPInitScript]` 日志
|
||||
|
||||
### 问题 1:Android/iOS 构建时报 DLL 相关编译错误
|
||||
|
||||
**原因**:`WX_PCHP_ENABLED` 宏被错误添加到了非 Standalone 平台
|
||||
|
||||
**解决**:在 `Player Settings → Scripting Define Symbols` 中,确保只有 Standalone 平台定义了 `WX_PCHP_ENABLED`。或通过菜单 `微信小游戏 → PC高性能模式宏开关` 关闭。
|
||||
|
||||
### 问题 2:DLL 加载失败(~90% 的运行时问题)
|
||||
|
||||
**症状**:运行 .exe 后没有弹窗,日志报 `DllNotFoundException`
|
||||
|
||||
**验证导出目录结构**:
|
||||
```
|
||||
导出路径/
|
||||
├── YourGame.exe
|
||||
├── direct_applet_sdk.dll ← 必须存在
|
||||
└── YourGame_Data/
|
||||
```
|
||||
|
||||
**解决**:确保 `direct_applet_sdk.dll` 与 `.exe` 同级
|
||||
|
||||
### 问题 3:GetActiveWindow 返回空句柄
|
||||
|
||||
**原因**:窗口尚未创建时调用了初始化
|
||||
|
||||
**解决**:检查 Unity Player Settings,确保非后台启动;或考虑延迟初始化
|
||||
|
||||
**注意**:macOS 平台会传 `IntPtr.Zero`,由 DLL 内部获取窗口句柄,这是正常行为。
|
||||
|
||||
### 问题 4:宏添加后代码未生效
|
||||
|
||||
**原因**:修改 `ScriptingDefineSymbols` 后需要 Unity 重新编译脚本
|
||||
|
||||
**解决**:等待 Unity 编译完成(底部进度条),或手动 `Assets → Reimport All`
|
||||
|
||||
### 错误代码速查
|
||||
|
||||
| 错误信息 | 原因 | 解决 |
|
||||
|----------|------|------|
|
||||
| `DllNotFoundException` | DLL 不在 .exe 同级目录 | 复制 DLL 到 .exe 目录 |
|
||||
| `EntryPointNotFoundException` | DLL 版本不匹配 | 更新 `direct_applet_sdk.dll` |
|
||||
| `找不到 WXPCHPInitScript 类型` | SDK 未安装或宏未生效 | 重新导入 SDK 或等待编译 |
|
||||
| `GetActiveWindow 返回空句柄` | 窗口未创建(仅 Windows) | 延迟初始化或检查 Player Settings |
|
||||
| `WXPCHPInitScript 必须在 Runtime 程序集` | 脚本放在了 Editor 目录 | 移到 Runtime 目录 |
|
||||
|
||||
---
|
||||
|
||||
## 调试工具
|
||||
|
||||
### 日志查看
|
||||
|
||||
**Player.log 位置**:
|
||||
- Windows: `%APPDATA%\..\LocalLow\<CompanyName>\<ProductName>\Player.log`
|
||||
- macOS: `~/Library/Logs/<CompanyName>/<ProductName>/Player.log`
|
||||
|
||||
**搜索关键字**:`[WXPCHPInitScript]`、`DllNotFoundException`、`InitEmbeddedGameSDK`
|
||||
|
||||
**正常日志示例**:
|
||||
```
|
||||
[WXPCHPInitScript] 通过 RuntimeInitializeOnLoadMethod 自动创建
|
||||
[WXPCHPInitScript] ========== Awake 被调用 ==========
|
||||
[WXPCHPInitScript] ========== 开始初始化 ==========
|
||||
[WXPCHPInitScript] Step 1: 调用 InitEmbeddedGameSDK
|
||||
...
|
||||
[WXPCHPInitScript] ========== 初始化完成 ==========
|
||||
```
|
||||
|
||||
### Editor 菜单
|
||||
|
||||
| 菜单项 | 功能 |
|
||||
|--------|------|
|
||||
| 微信小游戏 → 转换PC高性能模式 | 打开路径B独立构建窗口 |
|
||||
| 微信小游戏 → PC高性能模式宏开关 | 一键启用/禁用 `WX_PCHP_ENABLED` 宏 |
|
||||
|
||||
---
|
||||
|
||||
## 更新日志
|
||||
|
||||
### v2.0.0 (2026-04-07)
|
||||
- **双路径架构**:支持"转换工具链"和"原生接入"两条路径
|
||||
- **`WX_PCHP_ENABLED` 宏**:总开关,整文件条件编译,Android/iOS 零干扰
|
||||
- **`RuntimeInitializeOnLoadMethod`**:零侵入自动初始化,不再强制修改场景
|
||||
- **`user32.dll` 平台隔离**:`#if UNITY_STANDALONE_WIN` 包裹,macOS 兼容
|
||||
- **`RestoreToMiniGamePlatform` 解耦**:从 `BuildPCHighPerformance` 的 finally 移到调用方
|
||||
- **Editor 宏开关菜单**:`微信小游戏 → PC高性能模式宏开关`
|
||||
|
||||
### v1.1.0 (2026-03-02)
|
||||
- 重命名 `EmbeddedAppletSDK` → `WXPCHPInitScript`
|
||||
- 迁移脚本到 Runtime 目录
|
||||
- 添加 `WeChatWASM` 命名空间
|
||||
|
||||
### v1.0.0 (2026-03-02)
|
||||
- 实现自动注入 EmbeddedAppletSDK GameObject
|
||||
- 智能检测并复制模板脚本
|
||||
- 兼容 Windows 和 macOS 构建
|
||||
7
Editor/PCHighPerformance/README.md.meta
Normal file
7
Editor/PCHighPerformance/README.md.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 44fbca8f9bf00174bea1068f569c4488
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -170,18 +170,14 @@ namespace WeChatWASM
|
||||
Debug.LogException(e);
|
||||
return false;
|
||||
}
|
||||
finally
|
||||
{
|
||||
// 恢复到小游戏构建目标,确保微信小游戏转换工具能正常加载
|
||||
RestoreToMiniGamePlatform();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 恢复到小游戏平台
|
||||
/// 恢复到小游戏平台(仅路径A——转换工具链——需要调用)
|
||||
/// 路径B(原生 Standalone 接入)不应调用此方法
|
||||
/// 团结引擎使用 WeixinMiniGame,Unity 使用 WebGL
|
||||
/// </summary>
|
||||
private static void RestoreToMiniGamePlatform()
|
||||
public static void RestoreToMiniGamePlatform()
|
||||
{
|
||||
#if TUANJIE_2022_3_OR_NEWER
|
||||
// 团结引擎:切换到 WeixinMiniGame 平台
|
||||
|
||||
@ -79,9 +79,10 @@ namespace WeChatWASM
|
||||
// 提示信息
|
||||
EditorGUILayout.HelpBox(
|
||||
"点击「生成并转换」将执行以下操作:\n" +
|
||||
"1. 向首场景注入 WXPCHPInitScript 脚本\n" +
|
||||
"1. 自动添加 WX_PCHP_ENABLED 宏到 Standalone 平台\n" +
|
||||
"2. 构建 Standalone 可执行文件\n" +
|
||||
"3. SDK 初始化时会弹窗展示各步骤进度",
|
||||
"3. 运行时通过 RuntimeInitializeOnLoadMethod 自动初始化 SDK\n\n" +
|
||||
"提示:开发者也可以手动在场景中挂载 WXPCHPInitScript 来精确控制初始化时机",
|
||||
MessageType.Info);
|
||||
|
||||
EditorGUILayout.EndScrollView();
|
||||
@ -161,11 +162,15 @@ namespace WeChatWASM
|
||||
|
||||
try
|
||||
{
|
||||
// Step 1: 注入 WXPCHPInitScript 到首场景
|
||||
EditorUtility.DisplayProgressBar("PC高性能模式", "正在向首场景注入 SDK 脚本...", 0.1f);
|
||||
InjectSDKToFirstScene();
|
||||
// Step 1: 确保 WX_PCHP_ENABLED 宏已定义
|
||||
EditorUtility.DisplayProgressBar("PC高性能模式", "正在检查 WX_PCHP_ENABLED 宏...", 0.05f);
|
||||
EnsurePCHPDefineSymbol();
|
||||
|
||||
// Step 2: 切换构建目标
|
||||
// Step 2: 检查首场景是否已有 SDK(有则跳过注入,依赖 RuntimeInitializeOnLoadMethod)
|
||||
EditorUtility.DisplayProgressBar("PC高性能模式", "正在检查 SDK 注入状态...", 0.1f);
|
||||
CheckAndOptionallyInjectSDK();
|
||||
|
||||
// Step 3: 切换构建目标
|
||||
EditorUtility.DisplayProgressBar("PC高性能模式", "正在切换构建目标...", 0.2f);
|
||||
var originalTarget = EditorUserBuildSettings.activeBuildTarget;
|
||||
if (originalTarget != buildTarget)
|
||||
@ -174,11 +179,11 @@ namespace WeChatWASM
|
||||
EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, buildTarget);
|
||||
}
|
||||
|
||||
// Step 3: 配置 Player Settings
|
||||
// Step 4: 配置 Player Settings
|
||||
EditorUtility.DisplayProgressBar("PC高性能模式", "正在配置 Player Settings...", 0.3f);
|
||||
ConfigurePlayerSettings();
|
||||
|
||||
// Step 4: 准备输出目录
|
||||
// Step 5: 准备输出目录
|
||||
if (!Directory.Exists(fullExportPath))
|
||||
{
|
||||
Directory.CreateDirectory(fullExportPath);
|
||||
@ -191,7 +196,7 @@ namespace WeChatWASM
|
||||
? Path.Combine(fullExportPath, $"{productName}.app")
|
||||
: Path.Combine(fullExportPath, $"{productName}.exe");
|
||||
|
||||
// Step 5: 获取场景列表
|
||||
// Step 6: 获取场景列表
|
||||
var scenes = GetEnabledScenes();
|
||||
if (scenes.Length == 0)
|
||||
{
|
||||
@ -200,7 +205,7 @@ namespace WeChatWASM
|
||||
return;
|
||||
}
|
||||
|
||||
// Step 6: 执行构建
|
||||
// Step 7: 执行构建
|
||||
EditorUtility.DisplayProgressBar("PC高性能模式", "正在构建 Standalone...", 0.5f);
|
||||
Debug.Log($"[PC高性能模式] 开始构建,输出: {executablePath}");
|
||||
|
||||
@ -224,6 +229,7 @@ namespace WeChatWASM
|
||||
Debug.LogError($"[PC高性能模式] 构建失败: {report.summary.result}");
|
||||
EditorUtility.DisplayDialog("构建失败", $"构建失败: {report.summary.result}\n\n请查看 Console 获取详细错误信息", "确定");
|
||||
}
|
||||
// 注意:路径B 不调用 RestoreToMiniGamePlatform(),保持 Standalone 平台
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
@ -233,71 +239,86 @@ namespace WeChatWASM
|
||||
}
|
||||
}
|
||||
|
||||
#region Scene Injection
|
||||
/// <summary>
|
||||
/// 确保 WX_PCHP_ENABLED 宏已定义
|
||||
/// </summary>
|
||||
private void EnsurePCHPDefineSymbol()
|
||||
{
|
||||
var targetGroup = BuildTargetGroup.Standalone;
|
||||
#if UNITY_2023_1_OR_NEWER
|
||||
var namedTarget = UnityEditor.Build.NamedBuildTarget.Standalone;
|
||||
var defines = PlayerSettings.GetScriptingDefineSymbols(namedTarget);
|
||||
#else
|
||||
var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup);
|
||||
#endif
|
||||
|
||||
if (!defines.Contains("WX_PCHP_ENABLED"))
|
||||
{
|
||||
var newDefines = string.IsNullOrEmpty(defines)
|
||||
? "WX_PCHP_ENABLED"
|
||||
: defines + ";WX_PCHP_ENABLED";
|
||||
|
||||
#if UNITY_2023_1_OR_NEWER
|
||||
PlayerSettings.SetScriptingDefineSymbols(namedTarget, newDefines);
|
||||
#else
|
||||
PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, newDefines);
|
||||
#endif
|
||||
Debug.Log("[PC高性能模式] 已自动添加 WX_PCHP_ENABLED 宏");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 向首场景注入 WXPCHPInitScript
|
||||
/// 检查首场景是否已有 SDK 组件,没有时可选注入
|
||||
/// 有 RuntimeInitializeOnLoadMethod 兜底,场景注入不再是必须
|
||||
/// </summary>
|
||||
private void InjectSDKToFirstScene()
|
||||
private void CheckAndOptionallyInjectSDK()
|
||||
{
|
||||
// 查找脚本类型
|
||||
var sdkType = FindTypeInAllAssemblies(SDK_CLASS_NAME);
|
||||
if (sdkType == null)
|
||||
{
|
||||
throw new System.Exception($"找不到 {SDK_CLASS_NAME} 类型,请确保 WX-WASM-SDK-V2 已正确安装");
|
||||
Debug.LogWarning($"[PC高性能模式] 未找到 {SDK_CLASS_NAME},可能需要等待宏生效后重新编译");
|
||||
return;
|
||||
}
|
||||
|
||||
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 中添加场景");
|
||||
}
|
||||
if (string.IsNullOrEmpty(firstScenePath)) return;
|
||||
|
||||
// 打开首场景
|
||||
var currentScenes = EditorSceneManager.GetSceneManagerSetup();
|
||||
var scene = EditorSceneManager.OpenScene(firstScenePath, OpenSceneMode.Single);
|
||||
|
||||
// 清理旧对象
|
||||
var oldSDK = GameObject.Find("EmbeddedAppletSDK");
|
||||
if (oldSDK != null)
|
||||
try
|
||||
{
|
||||
Debug.Log("[PC高性能模式] 删除旧的 EmbeddedAppletSDK 对象");
|
||||
GameObject.DestroyImmediate(oldSDK);
|
||||
var scene = EditorSceneManager.OpenScene(firstScenePath, OpenSceneMode.Single);
|
||||
var existing = GameObject.Find(SDK_GAMEOBJECT_NAME);
|
||||
|
||||
if (existing != null && existing.GetComponent(sdkType) != null)
|
||||
{
|
||||
Debug.Log("[PC高性能模式] 首场景已有 WXPCHPInitScript,跳过注入");
|
||||
return;
|
||||
}
|
||||
|
||||
// 清理旧对象
|
||||
var oldSDK = GameObject.Find("EmbeddedAppletSDK");
|
||||
if (oldSDK != null)
|
||||
{
|
||||
GameObject.DestroyImmediate(oldSDK);
|
||||
}
|
||||
|
||||
// 场景中没有,但 RuntimeInitializeOnLoadMethod 会自动创建
|
||||
Debug.Log("[PC高性能模式] 首场景无 SDK 组件,将依赖 RuntimeInitializeOnLoadMethod 自动初始化");
|
||||
|
||||
EditorSceneManager.SaveScene(scene);
|
||||
}
|
||||
|
||||
// 删除已存在的同名对象(避免重复)
|
||||
var existingSDK = GameObject.Find(SDK_GAMEOBJECT_NAME);
|
||||
if (existingSDK != null)
|
||||
finally
|
||||
{
|
||||
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);
|
||||
if (currentScenes != null && currentScenes.Length > 0)
|
||||
{
|
||||
EditorSceneManager.RestoreSceneManagerSetup(currentScenes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region Scene Helpers
|
||||
|
||||
/// <summary>
|
||||
/// 在所有程序集中查找类型
|
||||
/// </summary>
|
||||
|
||||
@ -291,6 +291,9 @@ namespace WeChatWASM
|
||||
{
|
||||
Debug.Log("[微信小游戏] PC高性能版本构建完成!");
|
||||
}
|
||||
|
||||
// 路径A(转换工具链):构建完成后恢复到小游戏平台
|
||||
WXPCHPBuildHelper.RestoreToMiniGamePlatform();
|
||||
}
|
||||
|
||||
return WXExportError.SUCCEED;
|
||||
|
||||
@ -2,7 +2,7 @@ namespace WeChatWASM
|
||||
{
|
||||
public class WXPluginVersion
|
||||
{
|
||||
public static string pluginVersion = "202604020915"; // 这一行不要改他,导出的时候会自动替换
|
||||
public static string pluginVersion = "202604071154"; // 这一行不要改他,导出的时候会自动替换
|
||||
}
|
||||
|
||||
public class WXPluginConf
|
||||
|
||||
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0f3c8e4abc7778dcf7afb3f801eedac6
|
||||
guid: 5f88e66ea4282864644e2e5e1011730e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3c4e132ea08f5e5a107ea8baf0cbf5ff
|
||||
guid: c2c222cb01cc594e2ae3d7616f478e87
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3899a1b75c5ff784f41feb320b463939
|
||||
guid: 9edae08cb16314fba8a9122b418d450e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1216,15 +1216,22 @@ namespace WeChatWASM
|
||||
/// });
|
||||
/// }
|
||||
/// </example>
|
||||
#if WX_PCHP_ENABLED
|
||||
public static WXPCHighPerformanceManager GetPCHighPerformanceManager()
|
||||
{
|
||||
#if UNITY_STANDALONE_WIN
|
||||
return WXPCHighPerformanceManager.GetInstance();
|
||||
#else
|
||||
Debug.LogWarning("[WX] GetPCHighPerformanceManager 仅在 Windows 平台可用");
|
||||
return null;
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
/// <summary>
|
||||
/// PC高性能模式管理器(需启用 WX_PCHP_ENABLED 宏)
|
||||
/// 未启用时返回 null
|
||||
/// </summary>
|
||||
public static object GetPCHighPerformanceManager()
|
||||
{
|
||||
Debug.LogWarning("[WX] GetPCHighPerformanceManager 需要启用 WX_PCHP_ENABLED 宏(仅 Standalone 平台可用)");
|
||||
return null;
|
||||
}
|
||||
#endif
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
// WX_PCHP_ENABLED: PC高性能模式总开关
|
||||
// 路径A(转换工具链): 由转换工具自动添加到 ScriptingDefineSymbols
|
||||
// 路径B(原生接入): 开发者手动添加,或通过 Editor 菜单一键开启
|
||||
#if WX_PCHP_ENABLED
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Concurrent;
|
||||
@ -172,13 +176,15 @@ namespace WeChatWASM
|
||||
[DllImport(DLL_NAME, CallingConvention = CallingConvention.Cdecl)]
|
||||
private static extern bool Cleanup();
|
||||
|
||||
// 获取当前活动窗口句柄
|
||||
// 获取当前活动窗口句柄(Windows 专属)
|
||||
#if UNITY_STANDALONE_WIN
|
||||
[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);
|
||||
#endif
|
||||
|
||||
#endregion
|
||||
|
||||
@ -248,6 +254,25 @@ namespace WeChatWASM
|
||||
|
||||
#endregion
|
||||
|
||||
#region Auto Initialize
|
||||
|
||||
/// <summary>
|
||||
/// 自动初始化入口(零侵入)
|
||||
/// 通过 RuntimeInitializeOnLoadMethod 在场景加载后自动创建
|
||||
/// 如果开发者已手动在场景中挂载,则跳过
|
||||
/// </summary>
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
|
||||
private static void AutoInitialize()
|
||||
{
|
||||
if (Instance != null) return;
|
||||
|
||||
var go = new GameObject("[WXPCHPInitScript]");
|
||||
go.AddComponent<WXPCHPInitScript>();
|
||||
Debug.Log("[WXPCHPInitScript] 通过 RuntimeInitializeOnLoadMethod 自动创建");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Unity Lifecycle
|
||||
|
||||
private void Awake()
|
||||
@ -346,11 +371,21 @@ namespace WeChatWASM
|
||||
// 4. 获取窗口句柄并初始化游戏窗口
|
||||
Debug.Log("[WXPCHPInitScript] Step 4: 获取窗口句柄");
|
||||
ShowStepInfo("步骤 4/5 - GetActiveWindow", "正在获取游戏窗口句柄...");
|
||||
#if UNITY_STANDALONE_WIN
|
||||
WindowHandle = GetActiveWindow();
|
||||
#else
|
||||
// macOS: 暂不通过 P/Invoke 获取窗口句柄,传 0 由 DLL 内部处理
|
||||
WindowHandle = IntPtr.Zero;
|
||||
Debug.Log("[WXPCHPInitScript] macOS 平台,窗口句柄由 DLL 内部获取");
|
||||
#endif
|
||||
if (WindowHandle == IntPtr.Zero)
|
||||
{
|
||||
#if UNITY_STANDALONE_WIN
|
||||
ShowError("GetActiveWindow 返回空句柄");
|
||||
return;
|
||||
#else
|
||||
Debug.Log("[WXPCHPInitScript] macOS 平台,使用 IntPtr.Zero 作为窗口句柄");
|
||||
#endif
|
||||
}
|
||||
Debug.Log($"获取窗口句柄成功: 0x{WindowHandle.ToInt64():X}");
|
||||
ShowStepInfo("步骤 4/5 - GetActiveWindow ✅", $"窗口句柄获取成功: 0x{WindowHandle.ToInt64():X}");
|
||||
@ -970,3 +1005,4 @@ namespace WeChatWASM
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // WX_PCHP_ENABLED
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4d94f319aa622b03849c8e69a8c7cba9
|
||||
guid: 8424f563af07202539b47962b1171f45
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d2fcde627429d4818f85e18d2a1263f9
|
||||
guid: 2bcf0e5ef117b0329e722c48d23cd3bd
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b2af85219bfaf6a05bd3bd6bc6d03829
|
||||
guid: a60de89d65363da065ce30620be7d2a2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bdf3bca45f7097b129e204847282cd24
|
||||
guid: 46325971494ef32de72eade3581bf639
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 82604dd9fc856ac2a8ba9c065b3f0f74
|
||||
guid: c65b01109226ec978f02beb8df8d697f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 848a462a23628985852dc620380dc698
|
||||
guid: c77407f41c24b13ce5a1335dcb92a601
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1cd8e103dc8cb7c406056cbc19a0da7e
|
||||
guid: e1427aadb307f0b99a7b1082841ebde7
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6852f18e86c0b0f9d687cd12e757be11
|
||||
guid: b6d168fabe430b6a51312e609b6c31bb
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92e78cafb9ee3bb507bb5f1d2d464323
|
||||
guid: e5b9314324b387266cafe4b4c1a5abfc
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6f8a3fb7d545a9c2f4cb6d3c911e01f8
|
||||
guid: 90396dde59d19dfe33617dcfba68b0ea
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 900b8f09ecdfa2e72a70b84c1eebb774
|
||||
guid: e9d80f40f6aae296a333ab2777f02b22
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6755f00877ecd893631231910933d4ed
|
||||
guid: d5f290134f725d60a83f883d9c85e475
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 27270731c7e1bdae791f9a891df08bca
|
||||
guid: e28532aae9f4800ec1f6d58fc29441f1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05dff728b56a6788b0002a35db638ab3
|
||||
guid: 1c9df8ca05b022c3bef83f3aa4108e28
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94baa1b07b72979942f824d3fa4316b8
|
||||
guid: 8957408231f54b05653df2654b2bc07b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 33aecb9421d7577bff6a9cee399fc62f
|
||||
guid: 638a98aafa5612e663a0713d7bff62bc
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c09a5b303d2369195c430976d5111957
|
||||
guid: fb657b779a8fd12e736343e2e4f1b623
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94afe4cf34619ee7284672597deadbdb
|
||||
guid: a6cbd06ef5eac91de4f0a08755634c80
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f9f0235dd51f1b0c9efca63315546955
|
||||
guid: 42cc0d09b6bf4f22e9f51867d2c8cba2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7d881fe3f7853c0fc3b0372496327ec
|
||||
guid: 85804c7ad8ee88f334f40deb3a31e5d6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 85bc5ab7146f11bd3745c05213267810
|
||||
guid: bfe0d0083aa7aec2918f0a22171a33da
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c63d44cff96fed99b29285d650215e5b
|
||||
guid: fa4180654bae24e2e529217ca74fbc14
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 748964f432130d20018c31e8ccf94765
|
||||
guid: 384b974d85c643cc7a7618439b8ae81e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 669b1053fadcb602f4808ba75e5cb3eb
|
||||
guid: 623475344aea1a10ae7024f102995d58
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 132bf65501259226e755ef658860ce7c
|
||||
guid: a0bd8131465fe83884270013588236a6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2e77f03fa4132105e406e7b4e920986
|
||||
guid: c027021f07b77c92778905e05ba13cf1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cfd0447c19143ba4c424d510171c4749
|
||||
guid: daf468fdbbe326f9de1767a27e3fbfab
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: de5d6956a4f8c950b00f2975a06c31b8
|
||||
guid: 8e927238e52d845fdc26c7924db9d88c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4cd850965eb65ecb2add3c82a65c7636
|
||||
guid: 7a8cfb837c388b6e4bd87b8d48410617
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b95c88fdcefc84eff7698ef331072d5
|
||||
guid: cde824c5fbdd03d655eccc6daa2363fd
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1599136c65ba399a0736ed477cd3f9be
|
||||
guid: df0ac0963ba42d6a27c62ec53cea34ad
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 465f79e042f08f54238942e70a8ed88e
|
||||
guid: 69655f37a48ceb0953e638c726976a26
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cce28cd7abeb995a7ba56195e81169ba
|
||||
guid: df0535f823adde07414614ca2c5c2188
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5359d80250e657a8a992b76900a885f9
|
||||
guid: cae8f141c91a33a3b6b8558100483734
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b79c7144b7ef9c8be6c4acb2a21c1c1d
|
||||
guid: c8cf97cd6379d1edc46fb09670c310d4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d07f88297badc254af33d46394906cda
|
||||
guid: 65c5a014d8638aaeac8e1bfc7cf88582
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dd6f9000617f9b2eca85bc6d599f1dd9
|
||||
guid: 6034018ade466dcd864ed79c2640517c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f6327ad840f6a9069dd66ae83074db0b
|
||||
guid: 0392e336004c42d47bca8b9f87bb5800
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7bf48e81d891374a332b739fd1c40f7
|
||||
guid: f92a3ce9f6dedda588257b3ecce257c5
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 741288a35af3a4b2c223537a51b417a6
|
||||
guid: b40720710e0dba053bf6caa55b8833e7
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 80c89ead5349646ae66ee700308752a5
|
||||
guid: 3ae06336bbc2775edd35b12a2e14549e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b1460f620a984af813434501139116dc
|
||||
guid: 0acfabfece9e7763872b79b904d53582
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76b847977e20e6da3636dbc85053ad63
|
||||
guid: d556fc04afb0615a38079f70b8cc500b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c6345b052ef553a44d6ac3caa7f728b
|
||||
guid: ffff1f42ad00b76875fd8033f50e6b44
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0fca09d72894fe57b36058f861fc0358
|
||||
guid: 07036b3d18cbebea435da00ecbe42595
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21ce6c9ad9c1f25f1edabfca8fdd815e
|
||||
guid: 2c0e86a91b6c21559926932d56f51f21
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 02d787436f30a761a6576c6ac6342009
|
||||
guid: 622be5a365b2e9a04c89c93d56a83cc8
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fc7566ad1398845fc6a2e47416b0d8a8
|
||||
guid: b09c77db145ce82695009a7739a97a3f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: baa810234733b35571eae2421bbf9827
|
||||
guid: 8a60744e1e76615c704e053b3aa1906d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6d4e09752bc145ec949170babf1e3ad6
|
||||
guid: b3720b1382f446ebfd0158f34aad8ea9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6776648588f5283cef236aab3010cc97
|
||||
guid: 8fce9fbe32413c7b5e913331250be992
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d3bf5af8a6c0a24dbe3f005cae269b3f
|
||||
guid: 6e199f0bf4fa878631e1fefb2db994ea
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 57fd82a56e3a9dba280254cacafb06c1
|
||||
guid: 90fc0325cf2f6227cf135d27057b0938
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: edf0a9a1546e0e70e1d8f3ccf6ce3f83
|
||||
guid: 980c83d7fc6d04fdbd8d8756de7cf525
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dae4cb4ecc6068f06c542ff84c6bd0e7
|
||||
guid: a8b5b373fe7c6b247531b9da8f29c2c2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c0452e405b404a968d147b3853d9427
|
||||
guid: 8e5605b45c9823649a1f3d19f7349d93
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fb16bd225561e6021d61508ac89f731
|
||||
guid: 17819975331ba3a2f42109027c820c4c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e9b49edc671d3713d68f76cca4583f2b
|
||||
guid: b49bac036c5b14ed286bdccc63f5b430
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4e16ff1a8624dff18d20295a4e8d4441
|
||||
guid: 4630f342112f3567329ec02a971fdd83
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 753e849f445689c7a3b964b271405451
|
||||
guid: 987c9ae98f032f731665a0e842e38db6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 58e440fe59f49a8b4d50db4b4d66803c
|
||||
guid: 47978bab2ebcc81b53d196fc65132350
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c3cee16857cb4ecf47b34993780c7854
|
||||
guid: e75e2b4d84ba34abdde047d08379789a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 19fdc70a4fb20e875bb2d97a0c593225
|
||||
guid: 17f875a3d952c9daa974ff374db6bd44
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9795cee09e7fb8721ded3f3bc9731fd7
|
||||
guid: 4806d289bc80d3506b807335fa33fd5b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c1c2d57b345ad7106801b4a82839f91c
|
||||
guid: c9cd7513f95945d7a65724abf1f4a6f9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 453707e476646856dd5bd0e66137166c
|
||||
guid: 2b4f5fd51f2aeff537f3673de4c2fd75
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 272557131fc9049c4239ad3a9692462d
|
||||
guid: 4cbbf7278c69f5ca9e24c1184527a602
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9e4d2ace703f22091167280977581e33
|
||||
guid: 2840fe87346a58bb65db3c010fd3f4ee
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fd4d798f8f8c23f76172ae483a36cf71
|
||||
guid: e880670e39743b71b36b8038276b5ca2
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21b143cea670ce892f9d285c056a6136
|
||||
guid: 3f1ec9aab91c0b17d6adbf08b520f593
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 33c723c5dfb6e5dd50ef97273ace5fc9
|
||||
guid: 0d791b5c3b2ed6c9a2727f2373fbff6d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 31d270a90d730e386bb83a81aacae398
|
||||
guid: 2fc8c25c9090ec6670b70e71a02be4cb
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5145382ec9f44fd2685eed8c7a41330d
|
||||
guid: 4a13e019764bc7a0df6fc6c81f10f866
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 51122850591c3b6bbb3539758424008e
|
||||
guid: fc44551262dafd86b726650bac3e6e80
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6c1962cc2a1d7fc136c4260c175bd5cc
|
||||
guid: 4a862f77dde3af6fd936b6a55a5770a2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0d8e3b3e06a076b1e98a9b9c04029028
|
||||
guid: 2cab313813b6439d257b7ed09d61e1bc
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 060ec75eb840f1a78fcd772bbeeb0920
|
||||
guid: 55ecba2f616a873830fb499d0f3c0976
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 762b4822bbcbc0ce54c72022c373c568
|
||||
guid: cfab9370b2c78ffc9d7b0ba0968f69f8
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed94e81a5e7e3d4dde5f5c0f9de0e881
|
||||
guid: 74c74b4eb0f29b9c2e213765cc491118
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2f11726c21d6bdd1cb5b3a72b583a3fc
|
||||
guid: 4d5ea17ba0fb0ef28b1e799942359ff6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 178b8e93dec252a3ccc82714264f88f5
|
||||
guid: f3a051f274bae1a7ec8122d8c9d9177c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 69153dbc7179ce029da32bcd58ced069
|
||||
guid: b81f97f4093939cfccc265a7d9ade4ed
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a07253156709799c32dd1b2719a1da0b
|
||||
guid: 67cfab09225213884234aa541c0c3987
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05a24460db7e3d42ec790884d16d0a9a
|
||||
guid: 099fa4b751a2d0681b721edec7b8a951
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user