Unity Scene 전환시 BGM 유지 및 볼륨 조절

2024. 2. 2. 22:26·📂 Unity Engine Study/📄 Unity 참고

 

 

 

📌 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
'📂 Unity Engine Study/📄 Unity 참고' 카테고리의 다른 글
  • Unity 인벤토리 생성
  • Unity 2D Tilemap Extras 사용 방법
  • Unity Splash Screen 및 Cursor 설정
  • Unity 이벤트 함수 실행 순서
YeonSu02
YeonSu02
Email : rkddustn2519@naver.com
  • YeonSu02
    IsLiife2
    YeonSu02
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 📂 Computer Science
      • 📂 Unity Engine Study
        • 📄 Unity 인프런 강의
        • 📄 Unity 유튜브 강의
        • 📄 Unity 참고
        • 💻 Game Development
      • 📂 Quality Assurance Study
        • 🔥 엘리스 SW QA트랙
        • 📄 QA 공부
        • 📚 QA 책 리뷰
      • 📂 Program Language Study
        • 📄 C# 공부
        • 📄 파이썬 공부
        • 📄 JavaScript 공부
        • 📄 TypeScript 공부
      • 📂 Additional Study
        • 📄 Git
        • 📄 Docker
        • 📄 Jenkins
        • 📄 Firebase
        • 📄 License
      • 📂 Experience
  • 블로그 메뉴

    • 홈
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    부트캠프 추천
    qa 책 리뷰
    qa 부트캠프
    정처기 독학
    istqb-ctfl
    테스팅자격증
    엘리스트랙 후기
    정처기 필기
    엘리스트랙
    qa 책
    자격증
    qa 강의
    국비부트캠프 추천
    qa자격증
    정처기 실기
    qa 직무 교육
    컴퓨터활용능력
    엑셀
    QA
    컴활
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
YeonSu02
Unity Scene 전환시 BGM 유지 및 볼륨 조절
상단으로

티스토리툴바