add volume mixer

This commit is contained in:
2026-05-06 18:44:52 -05:00
parent b414bd391c
commit aee3fe9ea7
7 changed files with 192 additions and 60 deletions
@@ -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
}