SceneManager에서 제공하는 LoadScene은 씬의 이름 또는 빌드 인덱스로 씬을 불러올 수 있다.
이때 LoadSceneMode를 프로젝트에 맞게 선택할 수 있다.
( LoadSceneMode는 생략할 수 있으며 생략 시 LoadSceneMode.Single로 동작하게 된다.)
SceneManager.LoadScene("SceneName");
LoadSceneMode.Single
SceneManager.LoadScene("SceneName", LoadSceneMode.Single);
새로운 씬을 로드하며 현재 로드되어 있는 씬을 언로드한다.
LoadScene의 기본값
간단하지만 씬 전환시 끊기는 현상이 발생할 수 있다.
현재 씬을 언로드하며 모든 데이터가 초기화된다.
Single 모드를 사용하며 특정 데이터를 유지하려면
DontDestroyOnLoad, ScriptableObject, PlayerPrefs, static 변수로 저장 등의 방법을 사용해야 한다.
LoadSceneMode.Additive
SceneManager.LoadScene("SceneName", LoadSceneMode.Additive);
새로운 씬을 로드하며, 현재 로드되어 있는 씬을 그대로 유지한다.
여러 씬을 동시에, 동적으로 관리할 수 있다.
메모리 사용량이 그만큼 늘어나며, 상대적으로 씬 간의 관리도 복잡해진다
오픈 월드 게임에서 맵을 분리해 최적화하는 방법으로 씬을 분리할 때 사용,
UI를 별도 씬으로 구별해서 관리할 때 사용한다.
Additive로 로드한 씬은 SceneManager.UnloadSceneAsync으로 언로드 가능하다.
SceneManager.UnloadSceneAsync("SceneName");
Async Load
SceneManager.LoadSceneAsync("SceneName");
비동기방식으로 로드
씬 로딩 중에도 게임이 실행된다.
로드가 완료되기 전까지는 씬 내 오브젝트에 접근할 수 없는 등 (비동기 로드 중엔 씬의 오브젝트가 활성화되지 않음)
일부 기능에 제한이 생긴다.
로딩 화면에 사용하거나 끊김 없는 씬 전환을 해야하는 경우에 사용된다.
'취준 > 기술면접' 카테고리의 다른 글
Unity - 오브젝트 초기화 순서 고려 (0) | 2024.11.27 |
---|---|
Texture와 Sprite (0) | 2024.11.22 |
Find함수, 자제해야 하는 이유 (0) | 2024.11.21 |
벡터 정규화(Nomarlized) (0) | 2024.11.20 |
Unity에서의 Coroutine (코루틴), IEnumerator (0) | 2024.11.19 |