94 lines
2.7 KiB
C#
94 lines
2.7 KiB
C#
using UnityEngine;
|
|
|
|
public class SliderToVCA : MonoBehaviour
|
|
{
|
|
public enum VCATarget
|
|
{
|
|
Master,
|
|
Ambiences,
|
|
Music,
|
|
SFX,
|
|
UI,
|
|
Voiceovers
|
|
}
|
|
|
|
public VCATarget target;
|
|
public AudioSliderDragHandler slider;
|
|
|
|
private void Awake()
|
|
{
|
|
slider.OnValueChanged += ApplyVolume;
|
|
}
|
|
private void Start()
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
|
|
}
|