- Unity version : 6000.0.21f1
이렇게 설정창에는 볼륨 조정할 수 있는 UI slider가 있을 수 있겠다.
아래 스크린샷은 예시로 보여주는 화면이다.
이미지만 참고하는 것이 좋겠다.
- 이미지 출처 : https://assetstore.unity.com/packages/tools/audio/eazy-sound-manager-71142
Eazy Sound Manager | 음악 | Unity Asset Store
Get the Eazy Sound Manager package from Hellmade Games and speed up your game development process. Find this & other 음악 options on the Unity Asset Store.
assetstore.unity.com
옵션 씬을 관리하는 클래스 SceneOptions 을 구현하였다.
옵션은 볼륨을 포함하여, 마우스 감도, 화면 밝기 등을 추가하였다.
- Master Volume
- Music Volume
- Sound Effect Volume
- Mouse Sensitivity
- Brightness
각 UI Slider는 listener로 함수를 등록하였다.
그리고 각 옵션들 값은 다른 클래스 OptionParameters 정적 클래스에 저장된다.
using UnityEngine;
using UnityEngine.UI;
namespace Sample
{
public class SceneOptions : MonoBehaviour
{
public Slider m_SliderMasterVolume;
public Slider m_SliderMusicVolume;
public Slider m_SliderSoundEffectVolume;
public Slider m_SliderMouseSensitivity;
public Slider m_SliderBrightness;
private void Awake()
{
m_SliderMasterVolume.onValueChanged.AddListener(SlideMasterVolume);
m_SliderMusicVolume.onValueChanged.AddListener(SlideMusicVolume);
m_SliderSoundEffectVolume.onValueChanged.AddListener(SlideSoundEffectVolume);
m_SliderMouseSensitivity.onValueChanged.AddListener(SlideMouseSensitivity);
m_SliderBrightness.onValueChanged.AddListener(SlideBrightness);
OptionParameters.Load();
m_SliderMasterVolume.value = OptionParameters.masterVolume;
m_SliderMusicVolume.value = OptionParameters.musicVolume;
m_SliderSoundEffectVolume.value = OptionParameters.soundEffectVolume;
m_SliderMouseSensitivity.value = OptionParameters.mouseSensitivity * 0.01f;
m_SliderBrightness.value = OptionParameters.brightness;
}
private void OnDestroy()
{
OptionParameters.Save();
}
void SlideMasterVolume(float _value)
{
OptionParameters.masterVolume *= _value;
}
void SlideMusicVolume(float _value)
{
OptionParameters.musicVolume *= _value;
}
void SlideSoundEffectVolume(float _value)
{
OptionParameters.soundEffectVolume *= _value;
}
void SlideMouseSensitivity(float _value)
{
OptionParameters.mouseSensitivity *= _value;
}
void SlideBrightness(float _value)
{
OptionParameters.brightness *= _value;
}
}
}
OptionParameters 정적 클래스는 옵션 값들이다.
이 옵션 값들은 PlayerPrefs에 저장되며 사용자의 기기, 로컬에만 저장된다.
using UnityEditor;
using UnityEngine;
namespace Sample
{
public static class OptionParameters
{
public static float masterVolume = 0.5f;
public static float musicVolume = 0.5f;
public static float soundEffectVolume = 0.5f;
public static float mouseSensitivity = 100f;
public static float brightness = 0.5f;
public static void Save()
{
PlayerPrefs.SetFloat("masterVolume", masterVolume);
PlayerPrefs.SetFloat("musicVolume", musicVolume);
PlayerPrefs.SetFloat("soundEffectVolume", soundEffectVolume);
PlayerPrefs.SetFloat("mouseSensitivity", mouseSensitivity);
PlayerPrefs.SetFloat("brightness", brightness);
}
public static void Load()
{
masterVolume = PlayerPrefs.GetFloat("masterVolume", 0.5f);
musicVolume = PlayerPrefs.GetFloat("musicVolume", 0.5f);
soundEffectVolume = PlayerPrefs.GetFloat("soundEffectVolume", 0.5f);
mouseSensitivity = PlayerPrefs.GetFloat("mouseSensitivity", 100f);
brightness = PlayerPrefs.GetFloat("brightness", 0.5f);
}
}
}
마지막으로 밝기(brightness) 조정은 아래와 같이 설정한다.
Light.intensity 값을 조정하면 되겠다.
using UnityEngine;
namespace Sample
{
public class LightBrightness : MonoBehaviour
{
public Light sceneLight;
private void Awake()
{
SetBrightness(OptionParameters.brightness);
}
public void SetBrightness(float _value)
{
sceneLight.intensity = _value;
}
}
}
마지막으로 사운드 값 설정은 Easy Sound Manager 에셋(무료)을 사용하여 조절한다.
'Engine > Unity' 카테고리의 다른 글
Blender 4 => Unity 6 FBX import 하기 (0) | 2024.10.14 |
---|---|
Unity + C# 1:1 과외 커리큘럼 : 리듬액션게임 (4) | 2024.10.12 |
나는 이 에셋의 베타 테스터가 되기로 하였다 (4편) : Fishing Simulator Toolkit (0) | 2024.10.11 |
나는 이 에셋의 베타 테스터가 되기로 하였다 (3편) : Fishing Simulator Toolkit (5) | 2024.10.11 |
나는 이 에셋의 베타 테스터가 되기로 하였다 (2편) : Fishing Simulator Toolkit (0) | 2024.10.11 |