UI系统组件
This commit is contained in:
56
Assets/_Game/Scripts/UI/MainMenu/MainMenuConfigSO.cs
Normal file
56
Assets/_Game/Scripts/UI/MainMenu/MainMenuConfigSO.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using BaseGames.Core.Events;
|
||||
|
||||
namespace BaseGames.UI.MainMenu
|
||||
{
|
||||
/// <summary>主菜单项动作类型。常用动作内置;任意自定义走事件频道。</summary>
|
||||
public enum MainMenuAction
|
||||
{
|
||||
NewGame, // 打开存档槽(新游戏语境)
|
||||
Continue, // 打开存档槽(继续语境)
|
||||
OpenSettings, // 打开设置子面板
|
||||
OpenCredits, // 打开制作团队子面板
|
||||
LoadScene, // 直接发起场景加载(用 sceneKey)
|
||||
Quit, // 退出游戏
|
||||
RaiseEvent, // 触发 eventChannel(万能扩展)
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 主菜单数据驱动表(策划编辑)。按顺序列出主菜单项;
|
||||
/// <see cref="DataDrivenMainMenuController"/> 据此生成按钮并派发动作。
|
||||
/// 策划可增删 / 重排 / 改标签图标 / 改动作,无需改代码。
|
||||
///
|
||||
/// 派发边界:动作类型固定(含 RaiseEvent 万能扩展);
|
||||
/// 子面板 / 场景 / 存档流的编排在控制器,配置表不引用场景对象。
|
||||
/// </summary>
|
||||
[CreateAssetMenu(menuName = "BaseGames/UI/Main Menu Config", fileName = "UI_MainMenuConfig")]
|
||||
public class MainMenuConfigSO : ScriptableObject
|
||||
{
|
||||
[Serializable]
|
||||
public struct Item
|
||||
{
|
||||
[Tooltip("按钮标签本地化 Key(UI 表)。")]
|
||||
public string labelKey;
|
||||
|
||||
[Tooltip("按钮图标(可空)。")]
|
||||
public Sprite icon;
|
||||
|
||||
[Tooltip("点击动作。")]
|
||||
public MainMenuAction action;
|
||||
|
||||
[Tooltip("勾选则需要存在有效存档才可用(如\"继续\";无存档时按钮置灰)。")]
|
||||
public bool requiresSave;
|
||||
|
||||
[Tooltip("LoadScene 动作的目标场景 Addressable Key。")]
|
||||
public string sceneKey;
|
||||
|
||||
[Tooltip("RaiseEvent 动作触发的事件频道。")]
|
||||
public VoidEventChannelSO eventChannel;
|
||||
}
|
||||
|
||||
[SerializeField] private Item[] _items;
|
||||
|
||||
public Item[] Items => _items;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user