DEG-136 [Feat] 사운드 설정 저장 및 불러오기 추가

This commit is contained in:
Lim0_C 2025-05-12 09:22:01 +09:00
parent 32a442ea20
commit 9d163fe992
4 changed files with 60 additions and 19 deletions

View File

@ -0,0 +1,31 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class PlayerPrefsManager
{
//사운드 설정 저장
public static void SaveSettings(float sfxVolume, float bgmVolume, bool sfxIsActive, bool bgmIsActive)
{
//볼륨
sfxVolume = Mathf.Clamp01(sfxVolume);
bgmVolume = Mathf.Clamp01(bgmVolume);
PlayerPrefs.SetFloat("SFXVolume", sfxVolume);
PlayerPrefs.SetFloat("BGMVolume", bgmVolume);
//뮤트
PlayerPrefs.SetInt("SFXIsActive", sfxIsActive ? 1 : 0);
PlayerPrefs.SetInt("BGMIsActive", bgmIsActive ? 1 : 0);
//즉시 저장
PlayerPrefs.Save();
}
//사운드 설정 불러오기
public static (float sfxVolume, float bgmVolume, bool sfxIsActive, bool bgmIsActive) LoadSettings()
{
var sfxVolume = PlayerPrefs.GetFloat("SFXVolume", 1f);
var bgmVolume = PlayerPrefs.GetFloat("BGMVolume", 1f);
var sfxIsActive = PlayerPrefs.GetInt("SFXIsActive", 1) == 1;
var bgmIsActive = PlayerPrefs.GetInt("BGMIsActive", 1) == 1;
return (sfxVolume, bgmVolume, sfxIsActive, bgmIsActive);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 083089baf7a258646917ef5c4fc63979
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -19,16 +19,11 @@ public class SettingsPanelController : PanelController
private void InitSettings()
{
//todo:저장된 데이터를 가져오게 해야함
var sfxIsActive = true;
var bgmIsActive = true;
var (sfxVolume, bgmVolume, sfxIsActive, bgmIsActive) = PlayerPrefsManager.LoadSettings();
sfxSliderButton.Init(sfxIsActive);
bgmSliderButton.Init(bgmIsActive);
//todo:저장된 데이터를 가져오게 해야함
var sfxSliderValue = 1f;
var bgmSliderValue = 1f;
sfxSlider.value = sfxSliderValue;
bgmSlider.value = bgmSliderValue;
sfxSlider.value = sfxVolume;
bgmSlider.value = bgmVolume;
Show();
}
@ -73,6 +68,7 @@ public class SettingsPanelController : PanelController
public void OnCloseButtonClicked()
{
//todo: 설정 저장 필요
PlayerPrefsManager.SaveSettings(sfxSlider.value, bgmSlider.value, sfxSliderButton.IsActive, bgmSliderButton.IsActive);
Hide();
}
}

View File

@ -1,3 +1,4 @@
using System;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
@ -95,7 +96,7 @@ public partial class GameManager
if (beamSFX != null) SafeSoundManager?.LoadAudioClip("Beam", beamSFX);
// 저장된 볼륨 설정 로드
// LoadVolumeSettings();
LoadVolumeSettings();
// 현재 씬에 맞는 배경음 재생
string currentSceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
@ -132,16 +133,18 @@ public partial class GameManager
}
// PlayerPrefs에 저장된 볼륨 설정 불러오기
// private void LoadVolumeSettings()
// {
// float bgmVolume = PlayerPrefs.GetFloat("BGMVolume", 1.0f);
// float sfxVolume = PlayerPrefs.GetFloat("SFXVolume", 1.0f);
//
//
// SafeSoundManager?.SetBGMVolume(bgmVolume);
// SafeSoundManager?.SetSFXVolume(sfxVolume);
//
// }
private void LoadVolumeSettings()
{
// float bgmVolume = PlayerPrefs.GetFloat("BGMVolume", 1.0f);
// float sfxVolume = PlayerPrefs.GetFloat("SFXVolume", 1.0f);
//
//
// SafeSoundManager?.SetBGMVolume(bgmVolume);
// SafeSoundManager?.SetSFXVolume(sfxVolume);
var (sfxVolume, bgmVolume, sfxIsActive, bgmIsActive) = PlayerPrefsManager.LoadSettings();
SafeSoundManager?.SetSFXVolume(sfxIsActive? sfxVolume : 0);
SafeSoundManager?.SetBGMVolume(bgmIsActive? bgmVolume : 0);
}
#endregion