using UnityEngine; namespace BaseGames.UI { /// /// 加载界面数据配置(策划编辑)。承载随机提示文案、标题与时长/手感参数。 /// /// 职责边界:本表只放数据。视觉样式(背景图、进度条 sprite、配色、布局、装饰)全部在 /// UI_LoadingScreen 预制件里由美术在 Prefab Mode 编辑,配色随 UI_Theme_Default 主题; /// 本表放图片/颜色字段。 /// /// 运行时优先读取本表;未指定时回退到组件上的序列化默认值。 /// [CreateAssetMenu(menuName = "BaseGames/UI/Loading Config", fileName = "UI_LoadingConfig")] public class LoadingScreenConfigSO : ScriptableObject { [Header("内容(本地化 Key,UI 表)")] [Tooltip("随机加载提示的本地化 Key 列表(如 LOADING_TIP_EXPLORE)。每次加载随机取一条;留空则不显示提示。")] [SerializeField] private string[] _tipKeys; [Tooltip("加载界面标题的本地化 Key(如 LOADING_TITLE)。留空则不显示标题。")] [SerializeField] private string _titleKey; [Header("时长 / 手感")] [Tooltip("加载画面最短显示时长(秒),避免一闪而过。")] [SerializeField] private float _minDisplayTime = 0.5f; [Tooltip("预计加载时长(秒)。进度条按此时间平滑爬升至约 90%,真正加载完成时再冲满。\n" + "建议设为该游戏典型场景的加载耗时:偏长则爬得慢、偏短则更快到 90%。")] [SerializeField] private float _expectedLoadTime = 2.5f; [Tooltip("进度条填充缓动速度(每秒可填充比例),用于平滑收尾。")] [SerializeField] private float _fillLerpSpeed = 1.6f; public string[] TipKeys => _tipKeys; public string TitleKey => _titleKey; public float MinDisplayTime => _minDisplayTime; public float ExpectedLoadTime => _expectedLoadTime; public float FillLerpSpeed => _fillLerpSpeed; } }