티스토리 뷰

오늘은 유니티를 다루면서 안 쓸 수가 없는 요소인 SceneManager에 대해서 정리해 보겠다.

사실 SceneManager를 많이 쓴다고 해도 SceneManager.LoadScene() 정도 밖에 안 쓸 것이다.

다만, SceneManager는 이 보다 더 많은 정보를 가지고 있다.

그 중에서도 자주 쓰일만 한 요소를 정리해 보자.


SceneManager란?

SceneManager라는 요소를 SceneManager.LoadScene()으로 사용하기는 하지만, 구체적으로  SceneManager가 무엇을 담당하는 지는 모르는 경우가 많을 것이다.

의외로 이에 대해서 깊게 들어갈 일이 잘 없기 때문인데, 그렇다 보니 SceneManager가 가지는 난점이나 불편함이 무엇 때문인지도 모르는 경우도 많을 것이다.

 

SceneManager의 역할은, 간단하게 말하면 BuildSetting에서 Scene목록에 Upload한 Scene들을 관리하는 것이다.

이 때문에 BuildSetting에서 Upload 하지 않은 씬은 LoadScene으로 불러올 수 없는 것.

동시에 그렇기에 스크립트 상으로 Scene을 생성하는 것도 가능하다. 물론, 쓸 일은 잘 없겠지만 말이다.

 

자, 그렇다면 자주 쓰이는 요소에 대해서 정리해 보자.


SceneManager.LoadScene()

유니티를 쓰면서 다른 건 몰라도 이 함수 만큼은 실컷 쓰고 있을 것이다.

그렇기에 기능도 익숙할 텐데, 그래도 굳이 적자면 '순번이나 이름을 통해서 씬을 로드하는 것'이다.

 

그렇다면, 일반적으로 쓰지 않을 방법을 설명해 보자. '순번으로도 로드할 수 있다.'

그러니까, 만약에 BuildSetting에서 순서를 잘 구성해 놨다면 SceneManager.LoadScene(숫자) 만으로 불러내는 것이 가능하다. 아예 ID와 유사한 방법으로 불러낼 수 있다는 점에서 정리만 잘 해 놨다면 오타 걱정 없이 씬을 로드할 수 있는 것이다.

어느 쪽을 사용할지는 개인의 자유일 것이다.


SceneManager.GetActiveScene()

현재 씬을 반환하는 함수. 로드가 아니라 반환임에 주의하자.

즉, 이것 만 쓰는 것으로는 씬을 재생성할 수 없다는 것. 씬을 재시작하도록 만들려면 위의 LoadScene()과 함께 사용해야 한다.

그래도 Retry 버튼을 만든다거나 하는 경우 유용하게 쓸 수 있어서, 이 또한 익혀두면 두루두루 쓰이리라 생각한다.


SceneManager.LoadSceneAsync()

LoadScene의 뒤에 Async가 붙었다는 점에서 예상할 수 있듯이, Scene을 백그라운드로 로드하는 함수다.

즉, '로딩창을 띄워놓고 뒤에서 Scene을 로드할 수 있다'는 것.

 

이 함수는 AsyncOperation이라는 객체를 반환하는데, 이 AsyncOperation은 progress 값을 이용해서 로드된 비율을 확인할 수 있다. 또한, AsyncOperation 내부의 allowSceneActivation 변수가 false일 때에는 로드가 완료되어도 씬이 바뀌지 않다가 true가 되면 씬이 바뀌는 구조이기도 하다.
즉, 로딩창을 만들 수 있다. 규모가 큰 게임을 만든다고 하면 안 쓸 수가 없는 요소인 셈.


[참고 URL: https://docs.unity3d.com/6000.0/Documentation/ScriptReference/SceneManagement.SceneManager.html]

 

사실, 오늘 SceneManager를 정리하게 된 이유는 2번째 항목인 GetActiveScene()를 보고 세부적으로 찾아보게된 것이 크다. 평상시에는 별 생각 없이 썼다가 이렇게 알아보니까 의외로 기능이 많아서 놀라기도 했다.

 

SceneManager는 유니티를 다룬다면 안쓸래야 안 쓸 수가 없는 요소다.

지금 여기에 정리해 놓은 것도 일부에 지나지 않으니, 시간을 내서 천천히 둘러보는 것도 좋지 않을까.

검색해서 알아보는 것도 좋지만, 이렇게 먼저 알아보게 된다면 개발 방식에 좀 더 여유가 생길 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함