Files
BlueArchiveMiniGame/Assets/Scripts/HotUpdate/Main/UI/SettingWindow/AudioPanel.cs

37 lines
1.0 KiB
C#
Raw Normal View History

2025-09-17 18:56:28 +08:00
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Audio;
2025-09-29 07:45:07 +08:00
public class AudioPanel : UIBasePanel, ISettingsPanel
2025-09-17 18:56:28 +08:00
{
[SerializeField] private Slider masterVolumeSlider;
[SerializeField] private AudioMixer audioMixer;
2025-09-29 11:03:26 +08:00
float masterVolume;
public override void OnShow()
2025-09-17 18:56:28 +08:00
{
2025-09-29 11:03:26 +08:00
masterVolume = masterVolumeSlider.value = SettingsManager.Inst.CurrentSettings.masterVolume;
2025-09-17 18:56:28 +08:00
if (audioMixer == null) audioMixer = FindAnyObjectByType<AudioMixer>();
}
public void OnMasterVolumeChanged(float value)
{
2025-09-29 11:03:26 +08:00
masterVolume = value;
2025-09-17 18:56:28 +08:00
SetVolume(value);
}
public void ApplySettings()
{
2025-09-29 11:03:26 +08:00
SettingsManager.Inst.CurrentSettings.masterVolume = masterVolume;
2025-09-17 18:56:28 +08:00
}
private void SetVolume(float volume)
{
if (audioMixer)
audioMixer.SetFloat("MasterVolume", Mathf.Log10(Mathf.Max(volume, 0.0001f)) * 20);
}
2025-09-29 07:45:07 +08:00
public void ResetToDefault()
{
2025-09-29 11:03:26 +08:00
SettingsManager.Inst.CurrentSettings.masterVolume = masterVolume = SettingsManager.Inst.DefSetting.masterVolume;
2025-09-29 07:45:07 +08:00
}
2025-09-17 18:56:28 +08:00
}