add volume mixer
This commit is contained in:
+34
-4
@@ -1,9 +1,12 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.Audio;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class SoundSettingManager : MonoBehaviour
|
||||
{
|
||||
public AudioMixer audioMixer;
|
||||
|
||||
float masterVolume;
|
||||
float musicVolume;
|
||||
float sfxVolume;
|
||||
@@ -28,21 +31,40 @@ public void ReloadReferences()
|
||||
MasterSlider.onValueChanged.AddListener(OnMasterValueChanged);
|
||||
SfxSlider.onValueChanged.AddListener(OnSfxValueChanged);
|
||||
MusicSlider.onValueChanged.AddListener(OnMusicValueChanged);
|
||||
|
||||
MasterSlider.value = masterVolume;
|
||||
SfxSlider.value = sfxVolume;
|
||||
MusicSlider.value = musicVolume;
|
||||
}
|
||||
|
||||
public void OnMasterValueChanged(float newValue)
|
||||
{
|
||||
masterVolume = newValue;
|
||||
SetVolumeFloat(newValue, "MasterVolume");
|
||||
}
|
||||
|
||||
public void OnSfxValueChanged(float newValue)
|
||||
{
|
||||
sfxVolume = newValue;
|
||||
SetVolumeFloat(newValue, "SFXVolume");
|
||||
}
|
||||
|
||||
public void OnMusicValueChanged(float newValue)
|
||||
{
|
||||
musicVolume = newValue;
|
||||
SetVolumeFloat(newValue, "MusicVolume");
|
||||
}
|
||||
|
||||
private void SetVolumeFloat(float sliderVal, string mixerGroup)
|
||||
{
|
||||
// Convert linear 0-1 to dB (-80 to 0 range)
|
||||
float dbValue = Mathf.Log10(sliderVal) * 20;
|
||||
if (sliderVal == 0)
|
||||
{
|
||||
dbValue = -80;
|
||||
}
|
||||
|
||||
audioMixer.SetFloat(mixerGroup, dbValue);
|
||||
}
|
||||
|
||||
#region Sound Settings Data Save/Load
|
||||
@@ -55,10 +77,18 @@ public void SaveSoundSettingsData(ref SoundSettingSaveData data)
|
||||
|
||||
public void LoadSoundSettingsData(SoundSettingSaveData data)
|
||||
{
|
||||
musicVolume = data.musicVolume;
|
||||
sfxVolume = data.sfxVolume;
|
||||
masterVolume = data.masterVolume;
|
||||
}
|
||||
musicVolume = data.musicVolume;
|
||||
sfxVolume = data.sfxVolume;
|
||||
masterVolume = data.masterVolume;
|
||||
|
||||
MasterSlider.value = masterVolume;
|
||||
SfxSlider.value = sfxVolume;
|
||||
MusicSlider.value = musicVolume;
|
||||
|
||||
SetVolumeFloat(masterVolume, "MasterVolume");
|
||||
SetVolumeFloat(musicVolume, "MusicVolume");
|
||||
SetVolumeFloat(sfxVolume, "SFXVolume");
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user