# EDITOR DEBUG

这份文档只讲 Unity Editor 联调。

默认主线只有一句话：

- 在 desktop 里创建或加入测试房间
- 复制 Unity 启动包
- 粘贴到 `IGPRuntimeManager` 的联调面板
- 进入 Play
- 点击连接当前测试房间

## 1. 先确认准备项

开始前确认这些都已经满足：

- `IGP.UnitySDK` 已经接入工程
- 场景里已经挂了 `IGPRuntimeManager`
- `IGPConfig.appId` 已经填好
- desktop 里已经进入当前游戏的测试房间

如果你还想在 Editor 里一起调 desktop 相关能力，比如成就，一般不需要额外填写 `Desktop Executable Path Debug Override`。

只有下面两种情况才需要填：

- 你要模拟正式安装后的游戏 exe 路径
- 你要排查本地 exe 绑定问题

这时填写这款游戏真正的 Windows 可执行文件路径，不要填 desktop 路径，也不要填 `Unity.exe`。

## 2. 从 desktop 复制 Unity 启动包

在 desktop 的 `SDK 联调` 页点击：

- `获取启动信息`
- `复制 Unity 启动包`

你拿到的应该是一整段 JSON。

默认情况下，不要手工拆字段。

## 3. 在 Unity Inspector 里应用启动包

1. 选中场景里的 `IGPRuntimeManager`
2. 展开 Inspector 里的 `Unity Editor 联调`
3. 把整段 JSON 粘贴到 `Launch Package JSON`
4. 点击 `Apply Launch Package`

成功后，这个面板会自动把下面几项填好：

- `Launch Ticket`
- `Bootstrap Endpoint`
- `Bootstrap Secret`
- `Auto Connect`
- `App Id Override`（如果启动包里带了）

下面这些单项输入会继续保留，但只是兜底：

- 当你要手工排查字段问题时再用
- 正常联调不要优先走手填

## 4. 进入 Play 并连当前房间

1. 进入 Play
2. 点击 `Connect Current Test Room`

如果一切正常，你应该看到：

- Inspector 状态开始变化
- Unity 已经附着到当前房间
- `HostedConnected` 变成 `True`
- `KcpConnected` 变成 `True`
- 你的游戏逻辑能收到进房后的回调或状态变化

成功后的重点不是“按钮点了没报错”，而是“当前玩家真的已经进了当前测试房间”。

如果你用的是 `MirrorTransportDemo` 这个示例，再补一个判断：

- 先等面板里的 `KcpConnected: True`
- 再点 `Start Hosted Role`

不要在 `KcpConnected` 还是 `False` 的时候先点这颗按钮，不然你看到的只是“房间控制线连上了”，对战线其实还没准备好。

## 5. 成功时应该看到什么

最少确认下面几件事：

1. Unity 能拿到当前房间 ID 或房间号
2. 当前玩家已经完成附着
3. 你的房间加入回调已经触发
4. 你至少能继续做一个动作：
   - `ready`
   - 发一条基础消息
   - 读一次房间状态

## 6. 失败时先查哪里

Inspector 里的状态文案已经会告诉你大概卡在哪一步。优先检查：

1. 你是不是还没进 desktop 的测试房间
2. 这份启动包是不是刚刚在当前房间里生成的
3. 你是不是把别的机器或别的角色的启动包贴过来了
4. `appId` 是否和当前游戏一致
5. Unity Console 有没有更明确的错误

更完整的排查表看：

- [TROUBLESHOOTING](TROUBLESHOOTING.md)

## 7. 如果要调本地打包版

第一阶段不单独提供一份长文档，先按这个最短路径做：

1. 在 desktop 里进入测试房间
2. 点击 `启动本地打包版`
3. 确认游戏是否自动进入当前房间
4. 如果失败，先回 desktop 看：
   - 最近一次结果
   - 主进程日志
   - 诊断信息导出

建议顺序是：

1. 先让 Editor 跑通
2. 再验证打包版

因为如果 Editor 还没通，你很难区分是接入问题，还是打包环境问题。

## 8. 如果要做双机联调

第一阶段只建议用最基础的双机步骤：

1. host 机器创建测试房间
2. guest 机器输入房间号加入
3. 两边分别生成自己的 Unity 启动包
4. 两边分别在各自的 Unity Editor 或本地打包版里启动
5. 两边都确认已经进入同一个房间
6. 再验证 ready、开始游戏和基础消息

双机时最常见的问题只有两个：

- 机器 A 用了机器 B 的启动包
- guest 还没真正加入房间，就先去启动了

这两个问题都先回 desktop 页面看当前房间状态。
