using UnityEngine; using BaseGames.Core.Events; namespace BaseGames.Core { /// /// 游戏全局设置数据(运行时值)。 /// [System.Serializable] public class GlobalSettingsData { public float MasterVolume = 1f; public float BGMVolume = 0.8f; public float SFXVolume = 1f; public float AmbientVolume = 0.8f; public bool VSync = true; public int TargetFPS = 60; public bool FullScreen = true; public string Language = "zh-CN"; public bool ShowSpeedrunTimer = false; } /// /// 全局设置默认值 SO(资产:Assets/Data/Settings/SET_GlobalSettings.asset)。 /// [CreateAssetMenu(menuName = "Settings/GlobalSettings")] public class GlobalSettingsSO : ScriptableObject { [Header("Audio")] public float DefaultMasterVolume = 1f; public float DefaultBGMVolume = 0.8f; public float DefaultSFXVolume = 1f; public float DefaultAmbientVolume = 0.8f; [Header("Display")] public bool DefaultVSync = true; public int DefaultTargetFPS = 60; public bool DefaultFullScreen = true; [Header("Language")] public string DefaultLanguage = "zh-CN"; [Header("Speedrun")] public bool ShowSpeedrunTimer = false; /// 将 SO 默认值填入 GlobalSettingsData。 public GlobalSettingsData CreateDefault() => new GlobalSettingsData { MasterVolume = DefaultMasterVolume, BGMVolume = DefaultBGMVolume, SFXVolume = DefaultSFXVolume, AmbientVolume = DefaultAmbientVolume, VSync = DefaultVSync, TargetFPS = DefaultTargetFPS, FullScreen = DefaultFullScreen, Language = DefaultLanguage, ShowSpeedrunTimer = ShowSpeedrunTimer, }; } }