using Thousandto.Core.Asset; using Thousandto.Core.Support; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Thousandto.Code.Logic { /// /// 声音配置 /// public class SoundSetting : SettingProcessBase { #region//继承父类的函数,初始化,注册函数 protected override void OnRegisterSettingChangedHandler() { base.OnRegisterSettingChangedHandler(); AddSettingChangedHandler(GameSettingKeyCode.EnableBGMusic, OnEnableBGMusicChanged); AddSettingChangedHandler(GameSettingKeyCode.EnableSound, OnEnableSoundChanged); AddSettingChangedHandler(GameSettingKeyCode.BGMusicVolume, OnBGMusicVolumeChanged); AddSettingChangedHandler(GameSettingKeyCode.SoundVolume, OnSoundVolumeChanged); } protected override void OnLoadDefault(bool isforce, bool save) { //背景音乐,默认开启 GameSettingCore.SetUnSave(GameSettingKeyCode.EnableBGMusic, 1, isforce); //音效,默认开启 GameSettingCore.SetUnSave(GameSettingKeyCode.EnableSound, 1, isforce); //背景音乐音量 GameSettingCore.SetUnSave(GameSettingKeyCode.BGMusicVolume, 100, isforce); //音效音量 GameSettingCore.SetUnSave(GameSettingKeyCode.SoundVolume, 100, isforce); if(save) { GameSettingCore.Save(); } } #endregion #region //声音配置改变后的处理函数 public void OnEnableBGMusicChanged(int value) { if (value <= 0) { AudioPlayer.SetVolume(AudioTypeCode.Music, 0f); } else { OnBGMusicVolumeChanged(GameSettingCore.Get(GameSettingKeyCode.BGMusicVolume)); } } //开启音效的配置改变 public void OnEnableSoundChanged(int value) { if (value <= 0) { AudioPlayer.SetVolume(AudioTypeCode.Ambient, 0f); AudioPlayer.SetVolume(AudioTypeCode.Sfx, 0f); AudioPlayer.SetVolume(AudioTypeCode.Speech, 0f); AudioPlayer.SetVolume(AudioTypeCode.UI, 0f); } else { OnSoundVolumeChanged(GameSettingCore.Get(GameSettingKeyCode.SoundVolume)); } } //背景音乐音量 public void OnBGMusicVolumeChanged(int value) { if (GameSettingCore.Get(GameSettingKeyCode.EnableBGMusic) > 0.5) { float v = UnityEngine.Mathf.Min(UnityEngine.Mathf.Max(0f, (float)value / 100f), 1f); AudioPlayer.SetVolume(AudioTypeCode.Music, v); } } //音效的音量 public void OnSoundVolumeChanged(int value) { if (GameSettingCore.Get(GameSettingKeyCode.EnableSound) > 0.5) { float v = UnityEngine.Mathf.Min(UnityEngine.Mathf.Max(0f, (float)value / 100f), 1f); AudioPlayer.SetVolume(AudioTypeCode.Ambient, v); AudioPlayer.SetVolume(AudioTypeCode.Sfx, v); AudioPlayer.SetVolume(AudioTypeCode.Speech, v); AudioPlayer.SetVolume(AudioTypeCode.UI, v); } } #endregion } }