# 一、菜单系统架构图
![Menu System]()
# 二、游戏流程状态
- 每一个菜单对应一个游戏流程状态去处理逻辑。为什么要这样设计?
- 菜单只负责显示、游戏流程状态负责处理逻辑,典型的将 MVC 架构思想。
- 解耦。
- 方便游戏流程的控制和管理。
比如:切入 \ 切出主菜单,只需要简单的切换流程状态就行,其他的 UI 细节全部隐藏在流程状态之下,使外部不用去关系内部的实现。
# 四、Option
- 菜单中的每一个选项(按钮)就是一个 Option。
- Option 排列在菜单中显示,但是逻辑交给对应的 GameFlowState 处理。
- 配置一些数据。比如:这个 Option 是什么(Id),这样方便 GameFlowState 识别。
- 获取鼠标输入,并通过回调传递给 GameFlowState 处理逻辑(这主要是 UE5 的 Slate 架构所致,Swidget 的鼠标只能从从这里获取)。
- 使用步骤:
- 首先这个 Option 是 UUserWidget,可以在创建蓝图编辑样式,然后随心所欲将 Option 排列在菜单中(UXXWidget_DialogMenu_)。
- 按顺序注册进入 GameFlowState 管理。