48 lines
2.0 KiB
Markdown
48 lines
2.0 KiB
Markdown
## 标题界面(TitleMenu)技术说明
|
||
|
||
目标:TitleScene 显示“开始/重新开始/继续/设置/退出”,并在进入 Title 时预加载下一个场景;加载期间按钮置灰并显示“正在加载”。
|
||
|
||
### 一、脚本清单
|
||
- 标题菜单控制器:[TitleMenuController.cs](file:///e:/Unity/Unity%20Program/Test_2022/Assets/_Project/Scripts/UI/Title/TitleMenuController.cs)
|
||
- 设置面板:[SettingsController.cs](file:///e:/Unity/Unity%20Program/Test_2022/Assets/_Project/Scripts/UI/Settings/SettingsController.cs)
|
||
- 异步加载参考结构:[StartupSceneLoader.cs](file:///e:/Unity/Unity%20Program/Test_2022/Assets/_Project/Scripts/Core/SceneLoading/StartupSceneLoader.cs)
|
||
|
||
### 二、存档判断规则
|
||
- 存档文件:`Application.persistentDataPath/savegame.json`
|
||
- 有存档:
|
||
- 显示 Continue 按钮
|
||
- Start 按钮文案变为“重新开始”
|
||
- 无存档:
|
||
- 隐藏 Continue 按钮
|
||
- Start 文案为“开始游戏”
|
||
|
||
### 三、异步预加载逻辑
|
||
- 进入 Title 后立刻执行:
|
||
- `SceneManager.LoadSceneAsync(nextSceneBuildIndex)`
|
||
- `allowSceneActivation = false`
|
||
- 在 `progress < 0.9`(Unity 预加载阶段)之前:
|
||
- Start/Continue(如存在):
|
||
- `SetText("正在加载")`
|
||
- `Interactable(false)`
|
||
- 达到 0.9 后:
|
||
- 恢复按钮可交互并恢复文案(同时遵循“存档显示逻辑”)
|
||
|
||
### 四、按钮行为
|
||
- Start/重新开始:
|
||
- 若有存档:先删除 `savegame.json`
|
||
- 然后激活已预加载场景(`allowSceneActivation = true`)
|
||
- Continue:
|
||
- 仅有存档时可见/可用
|
||
- 激活已预加载场景
|
||
- 设置:
|
||
- `settingsController.OpenAtIndex(0)`
|
||
- 退出:
|
||
- `Application.Quit()`
|
||
|
||
### 五、场景接入步骤(Inspector)
|
||
1) 在 TitleScene 放置 `TitleMenuController` 并拖入:
|
||
- 4 个 Reach Button 的 `ButtonManager`(StartOrRestart/Continue/Settings/Quit)
|
||
- SettingsRoot 上的 `SettingsController`(建议手动拖,避免 Find)
|
||
2) 设置 `nextSceneBuildIndex` 为游戏主场景的 BuildIndex
|
||
|