📌 Scene 전환시 BGM 유지
첫번째 Scene에서 Audio Source Component를 가진 Object에 아래와 같은 Script를 Componet로 추가
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MusicManager : MonoBehaviour
{
GameObject[] BackgroundMusics;
AudioSource audioSource;
void Awake()
{
BackgroundMusics = GameObject.FindGameObjectsWithTag("Music");
if (BackgroundMusics.Length >= 2)
Destroy(this.gameObject);
DontDestroyOnLoad(transform.gameObject);
audioSource = GetComponent<AudioSource>();
}
}
본인은 첫번째 Scene에서
BGM을 바로 재생하였다.
DontDestroyOnLoad를 통해
첫번째 Scene에서 두번째 Scene으로 전환시
BGM 유지가 성공적으로 이루어졌으나
두번째 Scene에서 첫번째 Scene으로 다시 돌아갈 경우
BGM이 중첩되는 현상이 발생하였다.
이를 Length 확인을 통해 해결하였다.
📌 볼륨 조절
우선 Project 창에서 Audio Mixer를 1개 생성한다.
( Audio Mixer란 Audio Source에 대한 제어, 균형 및 동적 조정을 제공 )
Audio Mixer를 처음 생성하면 위와 같이 Master만 존재하는데
Groups의 +를 통해 BGM, SFX 등등을 추가해준다.
일단 BGM만 추가했다.
하나의 그룹을 선택한 뒤 Inspector 창을 보면
Attenuation에 Volume이 있는데 [ 오른쪽 마우스 ] - [ Expose 'Volume (of BGM)' to script ] 를 클릭한다.
Volume 옆에 화살표가 생기면 정상적으로 완료된 것이다.
위의 과정을 모든 그룹에 똑같이 수행한다.
그 후 Exposed Parameters의 이름을 변경해주면
Audio Mixer 설정은 완료가 되었다.
이제 Inspector 창에서 Audio Source의 Output을 설정해준다.
(해당 Audio Source가 Audio Mixer의 Group 중 어디에 해당하는지)
BGM 기본 Volume이 너무 작아서 Inspector 창에서 Attenuation의 Volume을 5.00dB로 설정해줬다.
( Slider의 Max Value는 10으로 설정 )
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;
public class AudioMixerController : MonoBehaviour
{
public AudioMixer audioMixer;
public Slider BGMSlider;
void Awake()
{
BGMSlider.value = 5;
}
public void SetBGMVolume()
{
float volume = BGMSlider.value;
if (volume == 0)
{
audioMixer.SetFloat("BGM", -80); // 음소거 기능
}
else
{
audioMixer.SetFloat("BGM", volume);
}
}
}
Script는 위와 같이 작성하고
해당 Script를 Component로 추가한 뒤
Audio Mixer와 BGM Slider를 드래그 앤 드롭으로 연결해준다.
그 후 Slider의 Inspector 창의 On Value Changed를
Script의 함수와 연결해주면 완성이다.
( On Value Changed는 Slider로 나타내는 Value가 변했을 때, 어떤 식으로 처리해줘야 하는지에 대한 정보를 입력 )
'📂 Unity Engine Study > 📄 Unity 참고' 카테고리의 다른 글
Unity 개발 중 새롭게 안 지식들 정리 (0) | 2024.02.08 |
---|---|
Unity 인벤토리 생성 (0) | 2024.02.07 |
Unity 2D Tilemap Extras 사용 방법 (0) | 2024.02.05 |
Unity Splash Screen 및 Cursor 설정 (0) | 2024.02.01 |
Unity 이벤트 함수 실행 순서 (0) | 2024.01.27 |