简介
在Lyra中,通过ESC键选择OPTIONS可以呼出设置页面W_LyraSettingScreen。
页面分析
W_LyraSettingScreen继承于C++类ULyraSettingScreen,其基于GameSettings插件提供的UGameSettingScreen。
classDiagram
class W_LyraSettingScreen {
+TopSettingsTabs
+Settings_Panel
+W_BottomActionBar
}
UCommonUserWidget <|-- UCommonActivatableWidget
UCommonActivatableWidget <|-- UGameSettingScreen
UGameSettingScreen <|-- ULyraSettingScreen
ULyraSettingScreen <|-- W_LyraSettingScreen
其中,GameSettings插件基于CommonUI插件,详细说明参考:虚幻引擎中CommonUI插件
页头页签
标签控件使用一个ULyraTabListWidgetBase制作,通过在C++中定义BindWidget,可以创建一个在C++中可以访问的蓝图控件。
| |
这个控件在蓝图中被设为一个W_HorizontalTabList,可以方便调整具体样式。
可以参考:结合蓝图与C++
在页面的Construct时,会调用RegisterTopLevelTab来依次注册各个Tab。
- GameplayCollection
- VideoCollection
- AudioCollection
- MouseAndKeyboardCollection
- GamepadCollection
对于每个Tab,通过UGameSettingScreen::GetSettingCollection读取具体的设置。
具体的设置项依赖于GameSetting提供的UGameSettingCollection类。
注册之后,只需要监听TopSettingsTabs的OnTabSelected即可在玩家选择对应页签时切换至所选Collection。
页面内容
这部分主要靠GameSettings插件调度,在UGameSettingScreen中定义了变量Settings_Panel用于标记设置内容控件。
Settings_Panel是蓝图W_SettingsPanel,其基于GameSettings插件提供的UGameSettingPanel。
界面提供了设置项ListView_Settings列表,以及设置项详情Details_Settings。
页尾按钮
TODO