using Framework; using Gameplay; 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.defaultPerformanceId; _defaultSettingData.Account = Gameplay.Net.Actor.Instance.Login.AccountID; SettingData = StorageMgr.Instance.GetStorage("SettingData"); if (!SettingData.Account.Equals(Gameplay.Net.Actor.Instance.Login.AccountID)) { //清空本地缓存 恢复设置和性能系统默认值 StorageMgr.Instance.DeleteSaveData(); SettingData = StorageMgr.Instance.GetStorage("SettingData"); RevertDefault(); } if (SettingData.PerformanceID == 0) SettingData.PerformanceID = _defaultSettingData.PerformanceID; //保存至本地 StorageMgr.Instance.SyncForce = true; 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; SettingData.Account = _defaultSettingData.Account; //保存至本地 StorageMgr.Instance.SyncForce = true; ChangeGameSettings(); } private void ChangeGameSettings() { AudioManager.Instance.GlobalMusicVolume = SettingData.BGMValue; AudioManager.Instance.GlobalSoundsVolume = SettingData.EffectValue; AudioManager.Instance.GlobalSpeakVolume = SettingData.TalkValue; PerformanceManager.SetPerformance(GetPerformanceConfig()); PerformanceManager.instance.SetFrameRate(SettingData.FrameRate); } private PerformanceData GetPerformanceConfig() { return PerformanceManager.instance.GetPerformanceData(SettingData.PerformanceID); } }