[Unity] 씬(Scene) 전환/이동 마다 호출(실행)되는 함수

유니티에서 Scene 관련 함수를 사용시에는

using UnityEngine.SceneManagement;

유니티에서 제공하는 SceneManagement 라이브러리를 작성합니다.

 

이제 씬 전환마다 호출되는 함수적용을 위해 Start() 함수에 아래와 같은 코드를 작성해줍니다.

void Start()
{
    SceneManager.sceneLoaded += OnSceneLoaded;
}

 

 

 

이제 씬 전환될때마다 호출되는 함수인 OnSceneLoaded()를 써줍니다.

void OnSceneLoaded(Scene arg0, LoadSceneMode arg1)
{

}

위 코드는 Start()함수에 작성한 SceneManager.sceneLoaded += OnSceneLoaded; 이 없으면 작동하지 않는 것 같습니다.

 

그리고 씬 이름을 가져올때에는 OnSceneLoaded메소드의 매개변수인 arg0을 이용해서

arg0.name 을 통해 씬 이름을 가져올 수 있습니다.

 

씬마다 배경음을 다르게 하고싶을때에는

private void OnSceneLoaded(Scene arg0, LoadSceneMode arg1)
    {
        for(int i=0; i<BGMList.Length; i++)
        {
            if(arg0.name == BGMList[i].Stagename)
            {
                musicSource.clip = BGMList[i].audio;
                musicSource.volume = 0.5f;
                musicSource.loop = true;
                musicSource.Play();
            }
        }
    }

이런식으로 씬이름과 비교하여 배경음악을 바꿀 수 있었습니다.

'유니티 > 씬(Scene)' 카테고리의 다른 글

[Unity] 씬(Scene) - 특정 씬 이동 / 씬 전환  (0) 2023.09.18