[Unity] SceneManager

Learning 

When: 1학년 7월 20일

 

How:

개인 프로젝트를 만들 때 씬을 넘기거나 초기화하는 과정에서 Time.time은 어떻게 되는지, 씬을 재시작하는 방법이 무엇인지 등 기본적인 것들을 몰랐기 때문에 그것에 대해 공부해 보게 되었습니다.

 

Understanding:

씬을 로드할 때는 Build Profiles - Scene List에 씬을 넣어주는 것이 필수이며, SceneManager을 사용할 때는 using UnityEngine.SceneManagement; 이렇게 SceneManagement를 사용할 것을 명시해주어야 합니다. (안 해도 자동으로 써주기는 합니다.)

  • LoadScene : SceneManager.LoadScene() 메서드는 씬을 로드할 때 사용되는 기본적인 메서드입니다. 하지만 이 메서드엔 오버로드가 여러 가지 있는데, 필수인 매개 변수와 필수가 아닌 매개 변수로 나누어서 설명해 보겠습니다.
    • 필수 매개 변수 : 씬의 이름을 string 값으로 받거나 씬 리스트의 인덱스 값을 int 값으로 넣어주는 것이 필수입니다. 둘 중에 하나만 있어야 합니다.
    • 필수는 아닌 매개 변수 : 씬을 로드할 때 원래 실행되고 있던 씬은 종료할지 아니면 그대로 실행하고 새로운 씬을 겹쳐서 실행할지 LoadSceneMode.Additive(겹치기)/Single(덮어쓰기)으로 이루어진 enum 값으로 정할 수 있습니다.
    • LoadSceneAsync : LoadScene과 비슷하지만 씬을 로드할 때 LoadScene은 게임이 잠시동안 멈추는 반면, 이 메서드는 게임을 계속 실행시키며 씬을 로드합니다. 매개 변수는 LoadScene과 같습니다.
  • UnloadScene : Scene 타입의 매개 변수나 string 타입의 이름을 뜻하는 매개 변수로 씬을 종료할 수 있습니다.
    • UnloadSceneAsync : 게임을 멈추지 않고 씬을 종료합니다.
GetActiveScene() 현재 활성화된 씬을 반환합니다. 현재 활성화된 씬을 로드하면 재시작
SetActiveScene(Scene value) 활성화되는 씬을 정합니다. 아까 씬을 겹칠 수 있다고 했는데, 활성화된 씬은 하나만 존재하고, 그 씬에서 Instantiate이나 씬 병합 같은 것의 기준이 되기 때문에 활성화된 씬을 바꿔주어야 할 때 사용됩니다.
GetSceneByName(string value) 이름으로 씬을 찾아 반환합니다. 씬 타입의 값을 이름을 통해 얻어와야 할 때 사용됩니다.
GetSceneByBuildIndex(int value) 인덱스로 씬을 찾아 반환합니다. 인덱스 번호를 통해 씬 타입의 값을 찾아와야 할 때 사용됩니다.
sceneCount 열려있는 씬의 개수 현재 열려있는 씬의 개수를 반환합니다.
sceneCountInBuildSettings 씬 리스트에 존재하는 씬의 개수 현재 열 수 있는 모든 씬의 개수를 반환합니다.

 

Result: 팀 프로젝트를 할 때는 씬을 많이 다루지 않아서 몰랐지만 씬을 제대로 다루면 대기 화면도 잘 쓸 수 있고 게임을 자연스럽게 만들 수 있어서 꼭 알아야 할 것 같습니다.

'UnityEngine' 카테고리의 다른 글

[Unity] DOTween  (1) 2025.08.14
[Unity] ~캐스트(~cast)  (0) 2025.07.21
[Unity] 싱글톤 패턴  (2) 2025.07.12
[Unity] Overlap~  (2) 2025.07.10
[Unity] 룰 타일 (Rule Tile)  (1) 2025.07.07