using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Audio;
public class SettingsEfects : MonoBehaviour
{
[SerializeField] private AudioMixer mixer;
[SerializeField] private SFXManager sfxManager;
[SerializeField] private MusicManager musicManager;
[SerializeField] private Slider sfxSlider;
[SerializeField] private Image sfxButton;
[SerializeField] private Slider musicSlider;
[SerializeField] private Image musicButton;
[SerializeField] private Color lowColor;
[SerializeField] private Color highColor;
private const string sfxVolumeKey = "SFXVolume";
private const string musicVolumeKey = "MusicVolume";
// Start is called before the first frame update
void Start()
{
// Load saved volume settings or set default values
float savedSFXVolume = PlayerPrefs.GetFloat(sfxVolumeKey, 1f);
float savedMusicVolume = PlayerPrefs.GetFloat(musicVolumeKey, 1f);
// Set initial volume levels
SetSFXVolume(savedSFXVolume);
SetMusicVolume(savedMusicVolume);
// Update sliders based on saved volume levels
sfxSlider.value = savedSFXVolume;
musicSlider.value = savedMusicVolume;
}
// Update is called once per frame
void Update()
{
// Update SFX button color based on volume level
sfxButton.color = (sfxSlider.value <= 0) ? lowColor : highColor;
// Update music button color based on volume level
musicButton.color = (musicSlider.value <= 0) ? lowColor : highColor;
}
public void OnSFXVolumeChanged(float value)
{
SetSFXVolume(value);
SaveVolumeSetting(sfxVolumeKey, value);
}
public void OnMusicVolumeChanged(float value)
{
SetMusicVolume(value);
SaveVolumeSetting(musicVolumeKey, value);
}
private void SetSFXVolume(float value)
{
mixer.SetFloat("SFXVolume", Mathf.Log10(value) * 20);
sfxManager.SetSFXVolume(value);
}
private void SetMusicVolume(float value)
{
mixer.SetFloat("MusicVolume", Mathf.Log10(value) * 20);
musicManager.SetSFXVolume(value);
}
private void SaveVolumeSetting(string key, float value)
{
PlayerPrefs.SetFloat(key, value);
PlayerPrefs.Save();
}
}