主题
角色跨场景迁移
先读 场景系统的迁移契约与顺序。本 Skill 适用于服务端权威的 SCE Unit 玩法。
确认实际契约
- 记录用户实际运行的客户端、SDK 和依赖版本,核对可用 API;仓库最新源码的行为不能直接当作用户版本的行为。
- 明确是否保留原英雄、落点、库存、所属玩家和返回路径,再分配英雄迁移、玩家视图切换和主控绑定的职责。区分已确认契约、项目选择与尚未验证的假设。
MoveTo可尝试跨场景;SwitchScene的withMainUnit默认是false。委托框架携带当前主控可用true,显式迁移英雄后则用false。不要把一种项目路线写成所有切场景操作的唯一合法方式。
显式迁移原英雄
需要指定落点、保留原英雄并控制恢复步骤时:
- 保存原英雄引用与同步 ID、玩家槽位、原位置/场景、原主控及库存身份;同一玩家的迁移请求避免交错执行。
- 等目标场景服务端加载完成,调用原英雄
MoveTo(targetPoint);检查返回值及实际结果。框架会尝试迁移库存物品单元,仍需核对库存和场景登记。不要调用内部接口或手改场景集合补登记。 - 核对原英雄身份、有效性、所属玩家、落点,以及目标场景登记存在、源场景登记移除;保留原玩家槽位与库存归属。
player.SwitchScene(target, withMainUnit: false),核对结果;服务端玩家与英雄同场后,重新设置player.MainUnit = hero。- 客户端分别等待目标地图加载、英雄副本与本地主控就绪,设置等待超时和失败提示。
OnLoadEnd、非空MainUnit或一次成功返回都不能单独证明整条链路完成。
失败时读取各步实际状态。恢复沿“原英雄和库存回原场景并校验 → 玩家视图切回 → 同场后恢复原主控”的顺序执行,逐步检查;多步操作不保证自动回滚。原英雄/场景不可用或恢复失败时如实报告,按项目既定错误路径处理。不要默认重建英雄或用固定延迟掩盖问题。
验收和排查
按 debug-tools 启动真实服务端调试局,再按 sce-preview-verify 收集证据。纯客户端预览不能证明权威迁移成功。
| 检查范围 | 完成依据 |
|---|---|
| 服务端 | 原英雄身份与玩家槽位未变、有效、场景登记和落点正确、库存归属及物品场景正确、玩家与英雄同场、主控正确 |
| 客户端 | 本地玩家已切到目标场景且地图加载完成,英雄副本与本地主控对应原英雄同步 ID,血蓝/技能/镜头正确,实际移动、施法及库存操作正常 |
| 往返与失败 | 进入、返回、连续往返/重复触发及受控失败恢复均有结果,不残留旧主控或重复英雄 |
用同一调试局、玩家槽位和同步 ID 关联双端证据;服务端原英雄应保留,客户端副本则可能重建,不比较跨端托管引用。客户端其他玩家的 Scene 不能作为可靠迁移依据。
蓝底、血蓝显示“—”、技能空或镜头丢失时,依次核对地图加载、英雄复制、主控和 UI 数据来源。服务端位置正确不足以排除复制或绑定问题,也不足以证明上述症状由某个固定原因引起。
工具缺少关键状态时,在项目调试代码中增加有针对性的状态读取或日志,不编造 MCP 工具或字段。确认框架缺陷时应修实现并验证,文档不能替代修复。报告列出已验收路径和缺口;只有服务端证据时写“服务端已验证,客户端待验收”。