using UnityEngine; public class SliderToVCA : AbstractValueController { public enum VCATarget { Master, Ambiences, Music, SFX, UI, Voiceovers } public VCATarget target; public AudioSliderDragHandler slider; private void Awake() { slider.OnValueChanged += ApplyVolume; } private void Start() { RestoreFromConfig(); } override public void RestoreFromConfig() { float initialValue = GetInitialValue(); slider.SetHandleValue(initialValue); } private float GetInitialValue() { switch (target) { case VCATarget.Master: return ConfigManager.instance.getVolumeMaster(); case VCATarget.Ambiences: return ConfigManager.instance.getVolumeAmbient(); case VCATarget.Music: return ConfigManager.instance.getVolumeMusic(); case VCATarget.SFX: return ConfigManager.instance.getVolumeSFX(); case VCATarget.UI: return ConfigManager.instance.getVolumeUI(); case VCATarget.Voiceovers: return ConfigManager.instance.getVolumeVO(); default: return 0.5f; } } private void Update() { // Constantly push slider value to the VCA ApplyVolume(slider.CurrentValue, false); //Debug.Log("CurrentValue: " + slider.CurrentValue); } private void ApplyVolume(float value, bool isLastChange) { switch (target) { case VCATarget.Master: AudioManager.Instance.SetMasterVCA(value); if (isLastChange) ConfigManager.instance.SetVolumeMaster(value); break; case VCATarget.Ambiences: AudioManager.Instance.SetAmbientVCA(value); if (isLastChange) ConfigManager.instance.SetVolumeAmbient(value); break; case VCATarget.Music: AudioManager.Instance.SetMusicVCA(value); if (isLastChange) ConfigManager.instance.SetVolumeMusic(value); break; case VCATarget.SFX: AudioManager.Instance.SetSFXVCA(value); if (isLastChange) ConfigManager.instance.SetVolumeSFX(value); break; case VCATarget.UI: AudioManager.Instance.SetUIVCA(value); if (isLastChange) ConfigManager.instance.SetVolumeUI(value); break; case VCATarget.Voiceovers: AudioManager.Instance.SetVoiceoverVCA(value); if (isLastChange) ConfigManager.instance.SetVolumeVO(value); break; } } }