52 lines
2.4 KiB
Markdown
52 lines
2.4 KiB
Markdown
|
|
## InGame 暂停菜单(ESC)接入说明
|
|||
|
|
|
|||
|
|
目标:在游戏场景按 ESC 打开中置菜单(保存并退出 / 设置 / 返回游戏),并在 UI 打开时锁定玩家移动/互动。
|
|||
|
|
|
|||
|
|
### 一、脚本清单
|
|||
|
|
- 暂停菜单控制器:[InGamePauseMenuController.cs](file:///e:/Unity/Unity%20Program/Test_2022/Assets/_Project/Scripts/UI/PauseMenu/InGamePauseMenuController.cs)
|
|||
|
|
- 输入锁定服务:[PlayerControlLockService.cs](file:///e:/Unity/Unity%20Program/Test_2022/Assets/_Project/Scripts/Core/InputLock/PlayerControlLockService.cs)
|
|||
|
|
- 面板栈(ESC 关闭顺序):[UIPanelStack.cs](file:///e:/Unity/Unity%20Program/Test_2022/Assets/_Project/Scripts/UI/PanelStack/UIPanelStack.cs)
|
|||
|
|
- 设置面板控制器:[SettingsController.cs](file:///e:/Unity/Unity%20Program/Test_2022/Assets/_Project/Scripts/UI/Settings/SettingsController.cs)
|
|||
|
|
|
|||
|
|
### 二、Hierarchy 结构建议
|
|||
|
|
- InGamePauseMenuRoot(SetActive=false)
|
|||
|
|
- Buttons(VerticalLayoutGroup)
|
|||
|
|
- BtnSaveAndExit(Reach ButtonManager)
|
|||
|
|
- BtnSettings(Reach ButtonManager)
|
|||
|
|
- BtnReturnToGame(Reach ButtonManager)
|
|||
|
|
|
|||
|
|
### 三、场景操作步骤
|
|||
|
|
1) 确保场景里有 `_Bootstrap` 并挂 `SettingsBootstrap`
|
|||
|
|
- `SettingsBootstrap` 会自动创建:
|
|||
|
|
- SettingsService
|
|||
|
|
- UIPanelStack + UIPanelStackInput
|
|||
|
|
- PlayerControlLockService
|
|||
|
|
|
|||
|
|
2) 创建菜单 Root
|
|||
|
|
- 新建 `InGamePauseMenuRoot`(初始 SetActive=false)
|
|||
|
|
- 用 Reach Button 创建三个按钮并摆成垂直布局
|
|||
|
|
|
|||
|
|
3) 新建控制器并拖引用
|
|||
|
|
- 新建空物体 `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)
|
|||
|
|
|
|||
|
|
### 四、运行逻辑
|
|||
|
|
- ESC:
|
|||
|
|
- 若面板栈为空:打开暂停菜单(并入栈)
|
|||
|
|
- 若面板栈非空:只关闭栈顶面板(例如先关设置,再关暂停菜单)
|
|||
|
|
- 保存并退出:
|
|||
|
|
- 调用 `SaveManager.Instance.SaveGame()`(若存在)
|
|||
|
|
- 关闭菜单并加载 TitleScene
|
|||
|
|
- 设置:
|
|||
|
|
- 调用 `settingsController.OpenAtIndex(0)` 打开设置面板
|
|||
|
|
- 返回游戏:
|
|||
|
|
- 关闭菜单并恢复输入
|
|||
|
|
|