09. SceneSystem
왜 필요한가
Unity SceneManager를 직접 호출하면 로딩 화면, Additive 관리, 전환 취소 처리가 프로젝트마다 달라진다. SceneSystem이 이를 표준화한다.
언제 사용하는가
씬 전환, Additive 씬 로드/언로드가 필요할 때.
프로젝트에서 어떤 역할인가
Scene.LoadedCount/Scene.AdditiveCount를 Diagnostics에 자가 등록한다. OnSceneLoadStart/Complete, OnSceneUnloadStart/Complete 이벤트로 로딩 UI와 연동한다.
실제 게임에서는 언제 호출되는가
메인 메뉴 -> 로딩 씬 -> 게임 씬 전환 시.
코드 예제
[Inject] private ISceneSystem _scene;
await _scene.LoadAsync("Stage01");
관련 Sample
Samples/Scene/SceneSystemSample.cs
Best Practice
씬 전환 취소 시 OperationCanceledException은 로그 없이 반드시 재전파한다 (정상 흐름).
자주 하는 실수
SceneManager.LoadScene직접 호출- 씬 전환 취소 예외를 삼켜버림 (Rules #3 Async 원칙 위반)
실습 과제
- 두 개의 씬을 만들고
LoadAsync로 전환해본다. OnSceneLoadStart/OnSceneLoadComplete에 로딩 UI를 연결해본다.
이전 문서 / 다음 문서
이전: 08_AssetSystem.md 다음: 10_SaveSystem.md
관련 API
MCP_Index.md Scene 섹션