[TIL] Unity - Feedback - day 99

뭉크의 개발·2023년 12월 6일
0

Unity - Camp

목록 보기
67/70

🐧 들어가기 앞서

오디오의 설정값을 저장하면 좋겠다는 피드백이 들어왔다.


🐧 오늘 배운 것

해결 방법으로는
1. DataManager에 오디오값을 저장한다.
2. PlayerPrefs 이용한다.


🐧 기억할 것 & 진행

1번으로 하기에는 굳이? 라는 생각이 들고, 간단한 오디오 정보는 PlayerPrefs에 저장하면 좋다고 생각했다.

  • Setting.cs
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(); // 변경사항 즉시 저장
    }
}
  • AudioOption.cs
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);
    }
}

0개의 댓글