공부혜옹

[Unity] SoundManager - 배경음 플레이하기 본문

공부합시다/Unity

[Unity] SoundManager - 배경음 플레이하기

Blair06 2022. 1. 18. 21:26

프로젝트를 진행하면서 음악을 삽입할 일이 생겼다.

기능 목록
1. 배경음이 흘러나와야한다
2. Scene 별로 특정 배경음이 플레이되어야한다

향후 3D음향과 효율적인 효과음관리등을 추가할 예정이지만 이번 포스트에선 배경음에 집중해 위 2가지의 기능을 구현해보았다

구현요약

1. 빈 gameObject를 만들어 soundManager라는 이름을 붙인다
2. SoundManager라는 script를 생성해 SoundManager오브젝트에 붙인다
3. SoundManager script 코드작성
4. AudioSource라는 컴포넌트를 추가한 후 스크립트 Bg Sound에 부여한다
5. BgList에 배열 크기를 설정해주고 bgm을 넣어준다

코드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;


public class SoundManager:MonoBehaviour
{
	//sound를 한곳에서 관리할 수 있도록 singleton 패턴
    private static SoundManager _instance;
    
    public AudioSource bgSound;
    public AudioClip[] bgList;

    private void Awake()
    {
        if (_instance == null)
        {
            _instance = this;
            SceneManager.sceneLoaded += OnSceneLoaded;

        }
        else if (_instance != this)
        {
            Destroy(gameObject);
        }

        //scene이 전환되어도 object가 없어지지않도록함
        DontDestroyOnLoad(gameObject);


    }

	//scene이 로딩됐을때 해당 scene 이름과 같은 이름의 bgm 재생
    private void OnSceneLoaded(Scene arg0, LoadSceneMode arg1)
    {
        for(int i=0; i<bgList.Length; i++)
        {
            if(arg0.name == bgList[i].name)
            {
            	BgSoundPlay(bgList[i]);
            }

        }
    } 
    
  
	//배경음 플레이 함수
    public void BgSoundPlay( AudioClip clip)
    {
        bgSound.clip = clip;
        bgSound.loop = true;
        bgSound.volume = 0.1f;
        bgSound.Play();
    }
}

 

반응형

'공부합시다 > Unity' 카테고리의 다른 글

[Unity] JSON Serialize  (0) 2022.02.09
[Unity] ObjectPool을 이용한 object 관리  (2) 2022.01.16
Comments