본문 바로가기

무제_LR

씬 언로드, 로딩 UI 추가

 

씬 전환을 더욱 부드럽게 연출하기 위해 씬 전환용 로딩 UI를 만들었습니다.

추가적으로 씬 로딩 로직에 이전 씬 언로드도 추가했습니다.

 

로딩용 UI는 Lobby Scene ↔ Game Scene만 작동하도록 로딩 메소드에 bool 인자를 넣었습니다.

시작 직후 사전 로딩부터 나올만한 요소는 아니잖아요.

 

UI 자체는 생각하시는 대로 로딩 로직에

-UI 생성

-UI 활성화

-기존 씬 전환 로직

-UI 비활성화

-UI 제거

를 더한 것 뿐이고, 나름 의미있는 개발 요소는 다음과 같습니다.

기존에 씬 변경이 완료되면 LocalManager에서 Awake를 실행해 각종 세팅 및 플로우를 자동으로 실행시켰습니다.

이번에 로딩용 UI를 만들게 되면서 기존 LocalManager의 자동 실행 로직이 방해가 되더랍니다.

그래서 Awake 부분을 외부에서 직접 호출하도록 수정했습니다.

LocalManager에서 UI 및 세팅 부분을 담당하는 InitializeAsync

LocalManager에서 씬 시작을 명령하는 Play로 분리했습니다.

 

SceneProvider에서 이 LocalManager를 어케 가져오냐???

LocalManager localManager = null;
foreach (var root in handle.Result.Scene.GetRootGameObjects())
{
  localManager = root.GetComponentInChildren<LocalManager>(true);
  if (localManager != null)
  {
    await localManager.InitializeAsync();          
    break;
  }          
}

별거 있겠습니까, 그냥 Find시켰습니다.

 

 

Game Scene 자체는 LocalManager 외엔 텅 비어있는거라 이거 하나 찾아온다고 무거워질 일도 없겠죠.

 

다음에 할거: 일단 생각해보기