게임 개발 · 기술 동향미로의 개발노트
카테고리

SampleProjectForUnity

Addressables 기반 씬 전환·UI 관리 설계 제안

개발 기록 · 블로그 공개

원본 기록 상태 완료

Bootstrap 유지, 씬 전환 직렬화, UI 레이어와 수명 구분을 제안합니다. 구현·실행 검증은 수행하지 않았습니다.

Unity Behavior 상대의 근접 공격과 플레이어 HP70 — 실제 게임 캡처
SampleProjectForUnity의 다른 개발 기록에 첨부된 이미지 · Unity Behavior 상대의 근접 공격과 플레이어 HP70 — 실제 게임 캡처

작업 결과

설계 검토를 완료했습니다. Unity 6000.0.83f1, Addressables 2.9.1을 현재 설정에서 확인했습니다. 게임 코드는 수정하지 않았습니다.

권장 구성은 Bootstrap 씬 아래 SceneTransitionManager와 UIManager를 두는 방식입니다. 기존 HUDManager는 캐릭터 추적 HUD와 풀링을 계속 담당하도록 제안합니다.

적용 내용

설계 제안이며 구현 완료를 의미하지 않습니다.

구성 책임
Bootstrap 관리자, UIRoot, 단일 EventSystem 유지
SceneTransitionManager 중복 요청 제어, 로딩 화면, 씬 핸들 소유, 전환 성공·실패 처리
UIManager UI 프리팹 비동기 생성, 화면·팝업·오버레이 레이어, 중복 열기 제어, 닫기·해제
SceneDefinition 씬 ID, AssetReference, 기본 화면 UI ID
UIDefinition UI ID, AssetReferenceGameObject, 레이어, Global/Scene 수명, 닫기 정책

전환 흐름: 전환 잠금 → 입력 차단·로딩 표시 → 다음 씬 Additive 로드(activateOnLoad:true) → SceneManager.SetActiveScene → 다음 씬 초기화 준비 확인 → 이전 Scene 수명 UI 닫기 및 이전 씬 언로드 → 새 화면 표시 → 로딩 숨김·입력 복원. 이전 씬을 유지한 준비 단계에서는 양쪽 게임플레이를 명시적으로 정지합니다. Awake/OnEnable의 부작용도 준비 계약으로 통제합니다. 다음 씬 초기화 전 실패는 새 씬을 정리하고 기존 씬으로 복귀하며, 이전 씬 언로드가 시작된 이후 실패는 단계별 복구 상태로 처리합니다. 두 씬 동시 유지의 메모리 비용은 실제 콘텐츠로 측정해야 합니다.

UI는 Screen/Popup/Overlay 레이어와 별도로 Global/Scene 수명을 둡니다. 로딩·오류 오버레이는 Global, HUD·인벤토리는 기본 Scene 수명입니다. 모달은 UIManager가 게임 입력 차단 소유권을 관리하며 마지막 모달이 닫힌 후 복원합니다. 닫기(숨김·캐시)와 파괴(해제)를 구분하고 첫 구현은 닫을 때 해제로 단순화합니다. 자주 쓰는 UI 캐시는 측정 후 추가합니다.

InstantiateAsync로 생성한 UI는 ReleaseInstance로 해제합니다. LoadAssetAsync 후 일반 Instantiate 방식을 택하면 인스턴스를 모두 파괴한 뒤 원본 핸들을 Release해야 하므로 첫 구현에서는 두 방식을 섞지 않습니다. 씬 핸들은 SceneTransitionManager, UI 인스턴스 핸들은 UIManager가 소유합니다.

검증

cs를 읽었습니다.

실제 게임 실행·화면 검증은 수행하지 않았습니다.

출처

중앙 아카이브 원문

같은 카테고리의 글

개발 기록 아카이브 전체 보기 ↗