49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.Audio;
|
|
using UnityEngine.UI;
|
|
|
|
public class SettingsMenu : MonoBehaviour
|
|
{
|
|
[SerializeField] private TextMeshProUGUI sfxLabel;
|
|
[SerializeField] private Slider sfxSlider;
|
|
[SerializeField] private TextMeshProUGUI musicLabel;
|
|
[SerializeField] private Slider musicSlider;
|
|
[SerializeField] private AudioMixer mainMixer;
|
|
|
|
private void Start()
|
|
{
|
|
if (PlayerPrefs.HasKey("SFXVolume"))
|
|
{
|
|
sfxSlider.value = PlayerPrefs.GetFloat("SFXVolume");
|
|
}
|
|
if (PlayerPrefs.HasKey("MusicVolume"))
|
|
{
|
|
musicSlider.value = PlayerPrefs.GetFloat("MusicVolume");
|
|
}
|
|
|
|
UpdateSFX();
|
|
UpdateMusic();
|
|
}
|
|
|
|
public void UpdateSFX()
|
|
{
|
|
sfxLabel.text = $"SFX ({(sfxSlider.value * 100).ToString("F1")}%);";
|
|
mainMixer.SetFloat("SFXVolume", Mathf.Log10(sfxSlider.value) * 20);
|
|
if (sfxSlider.value <= 0f)
|
|
{
|
|
mainMixer.SetFloat("SFXVolume", Mathf.Log10(0.01f) * 20);
|
|
}
|
|
PlayerPrefs.SetFloat("SFXVolume", sfxSlider.value);
|
|
}
|
|
public void UpdateMusic()
|
|
{
|
|
musicLabel.text = $"Music ({(musicSlider.value * 100).ToString("F1")}%);";
|
|
mainMixer.SetFloat("MusicVolume", Mathf.Log10(musicSlider.value) * 20);
|
|
if (musicSlider.value <= 0f)
|
|
{
|
|
mainMixer.SetFloat("MusicVolume", Mathf.Log10(0.01f) * 20);
|
|
}
|
|
PlayerPrefs.SetFloat("MusicVolume", musicSlider.value);
|
|
}
|
|
}
|