오디오의 설정값을 저장하면 좋겠다는 피드백이 들어왔다.
해결 방법으로는
1. DataManager에 오디오값을 저장한다.
2. PlayerPrefs 이용한다.
1번으로 하기에는 굳이? 라는 생각이 들고, 간단한 오디오 정보는 PlayerPrefs에 저장하면 좋다고 생각했다.
using UnityEngine;
using UnityEngine.UI;
public class UISettings : MonoBehaviour
{
[SerializeField] private Button returnBtn;
private void Start()
{
SetAddListener();
}
private void SetAddListener()
{
returnBtn.onClick.AddListener(OnReturnClicked);
}
private void OnReturnClicked()
{
AudioManager.Instance.PlaySFX("Button", "Close");
SaveAudioSettings(); // 오디오 설정 저장
UIManager.Instance.CloseUI<UISettings>();
}
private void SaveAudioSettings()
{
PlayerPrefs.SetFloat("MasterVolume", AudioManager.Instance.GetVolume("Master"));
PlayerPrefs.SetFloat("BGMVolume", AudioManager.Instance.GetVolume("BGM"));
PlayerPrefs.SetFloat("SFXVolume", AudioManager.Instance.GetVolume("SFX"));
PlayerPrefs.Save(); // 변경사항 즉시 저장
}
}
using UnityEngine;
using UnityEngine.UI;
public class UIAudioOption : MonoBehaviour
{
[SerializeField] private Slider masterVolumeSlider;
[SerializeField] private Slider BGMvolumeSlider;
[SerializeField] private Slider SFXVolumeSlider;
private void Start()
{
InitializeSliders();
}
private void InitializeSliders()
{
// PlayerPrefs에서 저장된 값을 불러옴
masterVolumeSlider.value = PlayerPrefs.GetFloat("MasterVolume", 0.5f);
BGMvolumeSlider.value = PlayerPrefs.GetFloat("BGMVolume", 0.5f);
SFXVolumeSlider.value = PlayerPrefs.GetFloat("SFXVolume", 0.5f);
// 슬라이더 값이 변경될 때마다 AudioManager 싱글톤의 볼륨 조절 메소드를 호출
masterVolumeSlider.onValueChanged.AddListener(AudioManager.Instance.MasterSoundVolume);
BGMvolumeSlider.onValueChanged.AddListener(AudioManager.Instance.BGMSoundVolume);
SFXVolumeSlider.onValueChanged.AddListener(AudioManager.Instance.SFXSoundVolume);
}
}