- 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()
- {
-
- 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)
- {
-
- float dB = Mathf.Log10(Mathf.Clamp(value, 0.0001f, 1f)) * 20f;
- audioMixer.SetFloat(audioGroup, dB);
- }
- }