Table of Contents

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 원칙 위반)

실습 과제

  1. 두 개의 씬을 만들고 LoadAsync로 전환해본다.
  2. OnSceneLoadStart/OnSceneLoadComplete에 로딩 UI를 연결해본다.

이전 문서 / 다음 문서

이전: 08_AssetSystem.md 다음: 10_SaveSystem.md

관련 API

MCP_Index.md Scene 섹션