using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; using UnityEngine.UI; public class VolumeController : MonoBehaviour { [SerializeField] private Slider masterVolumeSlider; [SerializeField] private Slider musicVolumeSlider; [SerializeField] private Slider sfxVolumeSlider; [SerializeField] private AudioMixer audioMixer; private void Start() { // Initialize sliders with current AudioMixer values (optional) float currentMasterVol; float currentMusicVol; float currentSFXVol; if (audioMixer.GetFloat("Master", out currentMasterVol)) masterVolumeSlider.value = Mathf.InverseLerp(-80f, 0f, currentMasterVol); if (audioMixer.GetFloat("Music", out currentMusicVol)) musicVolumeSlider.value = Mathf.InverseLerp(-80f, 0f, currentMusicVol); if (audioMixer.GetFloat("SFX", out currentSFXVol)) sfxVolumeSlider.value = Mathf.InverseLerp(-80f, 0f, currentSFXVol); masterVolumeSlider.onValueChanged.AddListener(delegate { SetVolume("Master", masterVolumeSlider.value); }); musicVolumeSlider.onValueChanged.AddListener(delegate { SetVolume("Music", musicVolumeSlider.value); }); sfxVolumeSlider.onValueChanged.AddListener(delegate { SetVolume("SFX", sfxVolumeSlider.value); }); } private void SetVolume(string audioGroup, float value) { // Convert the slider value (0 to 1) to decibels (-80 dB to 0 dB) float dB = Mathf.Log10(Mathf.Clamp(value, 0.0001f, 1f)) * 20f; audioMixer.SetFloat(audioGroup, dB); } }