跨关卡传送流程

无缝 非无缝
SceneLoadingWpMapCmd.ts  ·  已省略「事件分发」类命令,仅保留实际执行步骤与分支;点击顶部标签跳转对应阶段
初始化
1
进入加载模式
SceneLoadingSetLoadModeCmd
2
打开加载界面
SceneLoadingOpenUiCmd
地图切换
?
WPMap 是否变化?
context.IsWpMapChanged()
是 · 跨关卡传送
3
加载新WPMap
SceneLoadingMainMapCmd
否 · 同图内传送
跳过地图切换
沿用当前 WPMap
若首次登录 + 静默登录:仍强制补一次地图事件 + DataLayer 重置
场景搭建
4
重置 DataLayer
SceneLoadingResetDataLayerCmd
5
加载 Load 过场场景
SceneLoadLevelCmd
6
更新子关卡任务
SceneLoadingUpdateLayerTasksCmd
资源预加载
7
开始加载 WPLayer
SceneLoadingNewSceneCmd
已跳过正常执行
8
预加载实体资源
ScenePreloadEntityAssetsCmd
已跳过正常执行
9
预加载 Actor
ScenePreloadActorCmd
流送与落位
10
等待 WP 场景流送完成
SceneWaitWpStreamingCmd
已跳过正常执行
11
移动到新场景
SceneLoadingMoveCmd
已跳过正常执行
UI 资源预加载
12
预加载战斗 UI 资源
SceneLoadingBattleUiAssetsCmd
13
预加载通用 UI 资源
ScenePreloadCommonUiAssetsCmd
收尾
14
加载完成后处理
SceneLoadingAfterCmd
15
清理预加载资源
SceneLoadingClearUnrefAssetsCmd
16
等待传送指令完成
SceneLoadingWaitTeleportCmdFinishedCmd
17
关闭加载界面
SceneLoadingCloseUiCmd
18
关卡加载完成
SceneLoadingCompleteCmd
19
落地表现
SceneLoadingAnimDownCmd
阶段配色 = 时间轴分组,与代码分区一一对应
虚线卡片 = 受顶部「无缝/非无缝」开关影响的步骤
什么是"无缝切换"(SwitchDimension)?点击展开判定条件
同一张 WPMap 内、由 World Partition 分区触发、玩家没有被传送也没换角色时的关卡切换,默认按无缝处理。 但只要命中下面任一条件,就会退化成"非无缝切换"(LoadingWpLayer),上面标记的 4 个步骤会正常执行:
什么是"静默登录"?点击展开判定条件
开发/编辑器专用的快速登录模式,跳过正式登录界面(LoginView),自动读取本地配置文件直接把角色扔进指定地图,方便调试。 PublicUtil.GetIsSilentLogin() 在下列条件都满足时被置为 true(见 GlobalData.IsRunWithEditorStartConfig): 因为静默登录跳过了正式登录该做的初始化,所以在本流程里:即使目标地图和当前地图是同一张 WPMap(不满足"跨关卡"分支), 只要是首次登录且处于静默登录,也会强制补一次 StartEnterMap / EndEnterMap 事件和一次 DataLayer 重置,避免状态没初始化对。