박민혁의 개발

유니티 사운드 매니저 본문

TIL

유니티 사운드 매니저

박민혁_kog 2023. 10. 19. 20:40

사운드 매니저 코드

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;

public enum BGM   // enum 값 후에 string 으로 찾기에 이름을 잘적어둬야함
{
    GoingUp,
    Catch,
    Shooting,
}

public class SoundManager : MonoBehaviour
{
    private static SoundManager _instance;
    public static SoundManager Instance { get => _instance; }

    [SerializeField] private AudioMixerGroup _bgmGroup;
    private AudioSource _bgmSource;
    private SFX _sfxOrigin;

    private const string BGM_PATH = "Sounds/BGM/";             //찾는 경로
    private const string SFX_PATH = "Sounds/SFX";

    private Dictionary<string, AudioClip> _bgms = new Dictionary<string, AudioClip>(); 

    private void Awake()
    {
        if (_instance == null)
        {
            _instance = this;
            DontDestroyOnLoad(gameObject);
            _bgmSource = gameObject.AddComponent<AudioSource>();
            _bgmSource.outputAudioMixerGroup = _bgmGroup;
            _bgmSource.playOnAwake = false;
            _bgmSource.loop = true;
        }
        else
        {
            Destroy(gameObject);
            return;
        }

        _sfxOrigin = Resources.Load<SFX>(SFX_PATH);

        string[] names = Enum.GetNames(typeof(BGM));
        foreach (string name in names)
        {
            _bgms.Add(name, Resources.Load<AudioClip>($"{BGM_PATH}{name}"));
        }
    }

    public void PlayBGM(BGM bgm)
    {
        if (_bgmSource.isPlaying)
            _bgmSource.Stop();

        _bgmSource.clip = _bgms[bgm.ToString()];
        _bgmSource.Play();
    }

    public void StopBGM()
    {
        _bgmSource.Stop();
    }

    public void PlaySFX(AudioClip clip)
    {
        SFX sfx = Instantiate(_sfxOrigin);
        sfx.Play(clip);
    }
}

 

이런식으로 사운드 소스를 매니저 하나를 만들어서 관리할시 소리 조절 기능을  만들수 있는듯함 

그러나 아직 거기까지 가기엔 내 이해도가 부족함

'TIL' 카테고리의 다른 글

플레이어 상태 머신  (1) 2023.10.23
애니메이션 점프 중 상승 상태 하강 상태  (0) 2023.10.20
조던 메크너의 게임 제작 20가지 팁  (1) 2023.10.17
유니티 멀티 포톤  (0) 2023.10.16
유니티 깃 머지 주의사항  (0) 2023.10.13