2.4 KiB
2.4 KiB
InGame 暂停菜单(ESC)接入说明
目标:在游戏场景按 ESC 打开中置菜单(保存并退出 / 设置 / 返回游戏),并在 UI 打开时锁定玩家移动/互动。
一、脚本清单
- 暂停菜单控制器:InGamePauseMenuController.cs
- 输入锁定服务:PlayerControlLockService.cs
- 面板栈(ESC 关闭顺序):UIPanelStack.cs
- 设置面板控制器:SettingsController.cs
二、Hierarchy 结构建议
- InGamePauseMenuRoot(SetActive=false)
- Buttons(VerticalLayoutGroup)
- BtnSaveAndExit(Reach ButtonManager)
- BtnSettings(Reach ButtonManager)
- BtnReturnToGame(Reach ButtonManager)
- Buttons(VerticalLayoutGroup)
三、场景操作步骤
- 确保场景里有
_Bootstrap并挂SettingsBootstrap
SettingsBootstrap会自动创建:- SettingsService
- UIPanelStack + UIPanelStackInput
- PlayerControlLockService
- 创建菜单 Root
- 新建
InGamePauseMenuRoot(初始 SetActive=false) - 用 Reach Button 创建三个按钮并摆成垂直布局
- 新建控制器并拖引用
- 新建空物体
InGamePauseMenuController - Add Component:
InGamePauseMenuController - Inspector:
- Menu Root:拖
InGamePauseMenuRoot - Save And Exit Button:拖
BtnSaveAndExit的 ButtonManager - Settings Button:拖
BtnSettings的 ButtonManager - Return To Game Button:拖
BtnReturnToGame的 ButtonManager - Settings Controller:拖场景中的
SettingsRoot上的 SettingsController(不拖也可自动 Find) - Title Scene Build Index:填 TitleScene 的 BuildIndex(默认 1)
- Menu Root:拖
四、运行逻辑
- ESC:
- 若面板栈为空:打开暂停菜单(并入栈)
- 若面板栈非空:只关闭栈顶面板(例如先关设置,再关暂停菜单)
- 保存并退出:
- 调用
SaveManager.Instance.SaveGame()(若存在) - 关闭菜单并加载 TitleScene
- 调用
- 设置:
- 调用
settingsController.OpenAtIndex(0)打开设置面板
- 调用
- 返回游戏:
- 关闭菜单并恢复输入