-
Notifications
You must be signed in to change notification settings - Fork 2
develop Option
Seong Hyeok OH edited this page Jun 5, 2023
·
2 revisions
- 사운드 필요한 곳에 Audio Source를 적용
- 오디오 소스의 "Play On Awake"를 true로 두어 재생
- 만약 false로 해야할 경우
- "오디오 소스가 적용된 오브젝트.GetComponent().Play();"를 사용
- BGM 재생 방법 SoundManager.instance.PlayBGM(재생할 BGM)
- SoundEffect 재생 방법 SoundManager.instance.PlaySoundEffect(재생할 효과음)
- SoundManager를 전체 씬에서 작동할 수 있는 곳에 적용
- 버튼에 ButtonScript을 각각 적용(모두 같은 소리가 나오도록 SoundManager에서 오디오 소스 결정)
- SoundManager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundManager : MonoBehaviour
{
public static SoundManager instance;
// 볼륨 값 변수들
public float bgmVolume = 1.0f; // BGM 볼륨
public float soundEffectVolume = 1.0f; // 사운드 이펙트 볼륨
public AudioClip buttonSoundClip; // 버튼 소리 파일
private AudioSource audioSource; // 소리를 재생할 오디오 소스
private void Awake()
{
if (instance == null)
{
instance = this;
}
else if (instance != this)
{
Destroy(gameObject);
return;
}
DontDestroyOnLoad(gameObject);
// 오디오 소스 설정
audioSource = GetComponent();
}
// BGM 재생
public void PlayBGM(AudioClip bgmClip)
{
// 마스터 볼륨과 BGM 볼륨 곱 연산 적용
float volume = bgmVolume;
}
// 사운드 이펙트 재생
public void PlaySoundEffect(AudioClip soundEffectClip)
{
// 마스터 볼륨과 사운드 이펙트 볼륨 곱 연산 적용
float volume = soundEffectVolume;
}
//버튼 클릭 사운드 재생
public void PlayButtonSound()
{
audioSource.PlayOneShot(buttonSoundClip);
}
}
- ButtonScript
public class ButtonScript : MonoBehaviour
{
private Button button;
private void Start()
{
button = GetComponent();
button.onClick.AddListener(PlayButtonSound);
}
private void PlayButtonSound()
{
SoundManager.instance.PlayButtonSound();
}
}
- OptionManager
public class OptionManager : MonoBehaviour
{
private void Start()
{
// 저장된 볼륨 값 로드
SoundManager soundManager = SoundManager.instance;
// defaultPanel의 자식 요소들을 가져와서 슬라이더를 초기화
Slider[] sliders = DefaultPanel.GetComponentsInChildren();
foreach (Slider slider in sliders)
{
switch (slider.name)
{
case "BgmSlider":
slider.value = soundManager.bgmVolume;
slider.onValueChanged.AddListener(OnBgmVolumeChanged);
break;
case "SoundEffectSlider":
slider.value = soundManager.soundEffectVolume;
slider.onValueChanged.AddListener(OnSoundEffectVolumeChanged);
break;
}
}
}
...
void OnBgmVolumeChanged(float value)
{
// BGM 볼륨 값을 변경
SoundManager soundManager = SoundManager.instance;
soundManager.bgmVolume = value;
Debug.Log(soundManager.bgmVolume);
}
void OnSoundEffectVolumeChanged(float value)
{
// 사운드 이펙트 볼륨 값을 변경
SoundManager soundManager = SoundManager.instance;
soundManager.soundEffectVolume = value;
Debug.Log(soundManager.soundEffectVolume);
}
...
}
- 옵션씬 불필요한 요소 제거
- 인 게임 옵션 불필요한 요소 제거