using Framework; using Gameplay.Performance; public class GameSettingManager { private static GameSettingManager instance; public static GameSettingManager Instance { get { if (instance == null) { CreateInstance(); } return instance; } } private static void CreateInstance() { if (instance != null) { return; } instance = new GameSettingManager(); } public GameSettingData SettingData { get; private set; } private GameSettingData _defaultSettingData; public void Init() { _defaultSettingData = new GameSettingData(); _defaultSettingData.PerformanceID = PerformanceManager.instance.performanceId; SettingData = StorageMgr.Instance.GetStorage("SettingData"); if (SettingData.PerformanceID == 0) SettingData.PerformanceID = _defaultSettingData.PerformanceID; ChangeGameSettings(); } public void SaveNewSettings(GameSettingData newData) { SettingData.PerformanceID = newData.PerformanceID; SettingData.FrameRate = newData.FrameRate; SettingData.BGMValue = newData.BGMValue; SettingData.EffectValue = newData.EffectValue; SettingData.TalkValue = newData.TalkValue; SettingData.IsOpenGrid = newData.IsOpenGrid; //保存至本地 StorageMgr.Instance.SyncForce = true; ChangeGameSettings(); } public void RevertDefault() { SettingData.PerformanceID = _defaultSettingData.PerformanceID; SettingData.FrameRate = _defaultSettingData.FrameRate; SettingData.BGMValue = _defaultSettingData.BGMValue; SettingData.EffectValue = _defaultSettingData.EffectValue; SettingData.TalkValue = _defaultSettingData.TalkValue; SettingData.IsOpenGrid = _defaultSettingData.IsOpenGrid; //保存至本地 StorageMgr.Instance.SyncForce = true; ChangeGameSettings(); } private void ChangeGameSettings() { AudioManager.Instance.GlobalMusicVolume = SettingData.BGMValue; AudioManager.Instance.GlobalSoundsVolume = SettingData.EffectValue; //TODO 开启格子 语音 PerformanceManager.SetPerformance(GetPerformanceConfig()); PerformanceManager.instance.SetFrameRate(SettingData.FrameRate); } private PerformanceData GetPerformanceConfig() { var data = new PerformanceData(); if (TableManager.Instance.Tables.PerformanceConfig.DataMap.TryGetValue(SettingData.PerformanceID, out var pConfig)) { data.enableShadow = pConfig.EnableShadow; data.enablePostEffect = pConfig.EnablePostEffect; data.enablePostOutline = pConfig.EnablePostoutline; data.enableTireMark = pConfig.EnableTireMark; data.useSimpleShader = pConfig.UseSimpleShader; data.resolution = pConfig.Resolution; data.targetFrameRate = pConfig.TargetFps; data.enableHDR = pConfig.EnableHDR; data.enableCloth = pConfig.EnableCloth; data.enableBulletTail = pConfig.EnableBulletTail; } return data; } }