Notice
Recent Posts
Recent Comments
Link
반응형
공부혜옹
[Unity] SoundManager - 배경음 플레이하기 본문
프로젝트를 진행하면서 음악을 삽입할 일이 생겼다.
기능 목록
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