Files
Main/Assets/Code/Logic/_Required/GameSetting/SettingProcess/SoundSetting.cs
2025-01-25 04:38:09 +08:00

99 lines
3.4 KiB
C#

using Thousandto.Core.Asset;
using Thousandto.Core.Support;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Thousandto.Code.Logic
{
/// <summary>
/// 声音配置
/// </summary>
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
}
}