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

SampleProjectForUnity

SceneControlManager·UIManager 구현 및 씬 예제 검증

개발 기록 · 블로그 공개

원본 기록 상태 완료

Addressables 기반 씬 전환·UI 수명 관리와 테스트 씬 2개, 로딩·화면·팝업 예제를 구현했습니다. 최종 Windows 플레이어 검사 57개와 실제 화면 검증을 통과했습니다.

Harbor 실제 실행 화면: 씬 이동·모달·실패 복구·중복 요청 버튼
Harbor 실제 실행 화면: 씬 이동·모달·실패 복구·중복 요청 버튼

작업 결과

구현·원본 반영·실제 Windows 플레이어 빌드 및 실행 검증을 완료했습니다. 요청하신 이름 SceneControlManager를 사용했습니다. Unity 6000.0.83f1, Addressables 2.9.1 기반입니다.

적용 내용

SceneControlManager는 Additive 로드·준비·기본 화면 생성 후 이전 UI·씬을 정리하고 게임플레이를 시작합니다. 중복·동일·미등록 씬 요청을 거부하며 준비 또는 기본 화면 생성 실패 시 이전 활성 씬과 화면을 복원합니다.

UIManager는 Screen/Popup/Overlay 계층과 Scene/Global 수명을 구분합니다. 동시 열기는 하나의 인스턴스를 공유하고 닫기·씬 정리는 대기 로드 결과도 무효화합니다. InstantiateAsync/ReleaseInstance 수명을 관리하며 팝업과 전환의 입력 차단 소유권을 합칩니다. 프레임 끝 파괴 전에 먼저 비활성화하여 닫힌 UI가 클릭을 가로채지 않도록 했습니다.

SceneCatalog·UICatalog·SceneContent·UIView 계약을 추가했습니다. 기존 HUDManager와 게임 씬은 수정하지 않았습니다. Addressables 기존 그룹은 보존하고 SceneUI-Scenes·SceneUI-UI 전용 그룹을 추가했으며 Bootstrap 빌드 씬만 추가했습니다. 원본 Packages/manifest.json은 변경하지 않았습니다.

예제: Assets/Examples/SceneUI/Scenes/SceneUIBootstrap.unity에서 시작하여 ExampleA(Harbor)·ExampleB(Observatory)를 이동합니다. 씬 안의 화면 버튼으로 정상 이동, 모달, 의도된 준비 실패 복구, 동시 전환 요청을 시연합니다. 모달이 열리면 오브젝트 회전이 멈추며 Escape로 닫으면 재개합니다.

실행: Sample Project → Scene UI → Open Example Bootstrap → Play. Create or Refresh Examples 메뉴는 예제 에셋을 재생성하고 Build Verification Player는 콘텐츠와 Windows 실행 파일을 빌드합니다. 실행 파일은 프로젝트 Builds/SceneUIExample/SceneUIExample.exe에 보관했습니다.

API: await SceneControlManager.Instance.ChangeSceneAsync("ExampleB"); await UIManager.Instance.OpenAsync("ExamplePopup", "메시지"); UIManager.Instance.Close("ExamplePopup");

md. 씬 폴더에도 README를 추가했습니다.

검증

최종 플레이어 결과: 57개 통과, 오류 0개.

개발 화면

Harbor 실제 실행 화면: 씬 이동·모달·실패 복구·중복 요청 버튼

Observatory 실제 실행 화면: 두 번째 목적지와 기본 화면

실제 Addressable 모달과 닫기 버튼

실제 로딩 오버레이와 전환 단계 진행도

의도된 준비 실패 후 Observatory를 유지한 실제 복구 화면

출처

중앙 아카이브 원문

같은 카테고리의 글

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