Skip to content

develop Option

Seong Hyeok OH edited this page Jun 5, 2023 · 2 revisions

사용 방법

  • 사운드 필요한 곳에 Audio Source를 적용
    • 오디오 소스의 "Play On Awake"를 true로 두어 재생
    • image
    • 만약 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);
    }
...
}

그 외 작업

  • 옵션씬 불필요한 요소 제거
    • image
  • 인 게임 옵션 불필요한 요소 제거
    • image
Clone this wiki locally