Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/Michsky/UI/Heat/UIManagerAudio.cs
2026-03-04 09:37:33 +08:00

96 lines
2.2 KiB
C#

using UnityEngine;
using UnityEngine.Audio;
namespace Michsky.UI.Heat
{
[DefaultExecutionOrder(-100)]
[DisallowMultipleComponent]
[RequireComponent(typeof(AudioSource))]
public class UIManagerAudio : MonoBehaviour
{
public static UIManagerAudio instance;
public UIManager UIManagerAsset;
[SerializeField]
private AudioMixer audioMixer;
public AudioSource audioSource;
[SerializeField]
private SliderManager masterSlider;
[SerializeField]
private SliderManager musicSlider;
[SerializeField]
private SliderManager SFXSlider;
[SerializeField]
private SliderManager UISlider;
private void Awake()
{
instance = this;
}
private void Start()
{
if (audioSource == null)
{
base.gameObject.GetComponent<AudioSource>();
}
InitVolume();
}
public void InitVolume()
{
if (audioMixer == null)
{
Debug.Log("Audio Mixer is missing, cannot initialize the volume.", this);
return;
}
if (masterSlider != null)
{
audioMixer.SetFloat("Master", Mathf.Log10(PlayerPrefs.GetFloat("Slider_" + masterSlider.saveKey)) * 20f);
masterSlider.mainSlider.onValueChanged.AddListener(SetMasterVolume);
}
if (musicSlider != null)
{
audioMixer.SetFloat("Music", Mathf.Log10(PlayerPrefs.GetFloat("Slider_" + musicSlider.saveKey)) * 20f);
musicSlider.mainSlider.onValueChanged.AddListener(SetMusicVolume);
}
if (SFXSlider != null)
{
audioMixer.SetFloat("SFX", Mathf.Log10(PlayerPrefs.GetFloat("Slider_" + SFXSlider.saveKey)) * 20f);
SFXSlider.mainSlider.onValueChanged.AddListener(SetSFXVolume);
}
if (UISlider != null)
{
audioMixer.SetFloat("UI", Mathf.Log10(PlayerPrefs.GetFloat("Slider_" + UISlider.saveKey)) * 20f);
UISlider.mainSlider.onValueChanged.AddListener(SetUIVolume);
}
}
public void SetMasterVolume(float volume)
{
audioMixer.SetFloat("Master", Mathf.Log10(volume) * 20f);
}
public void SetMusicVolume(float volume)
{
audioMixer.SetFloat("Music", Mathf.Log10(volume) * 20f);
}
public void SetSFXVolume(float volume)
{
audioMixer.SetFloat("SFX", Mathf.Log10(volume) * 20f);
}
public void SetUIVolume(float volume)
{
audioMixer.SetFloat("UI", Mathf.Log10(volume) * 20f);
}
}
}