Pular para o conteúdo principal

My Scene Manager

Enriqueça sua experiência de gerenciamento de cenas no Unity.

LicençaMIT
Unity6.0+
DependênciasNenhuma
AddressablesOpcional
Render pipelinesBuilt-in · URP · HDRP

Uma linha no lugar de cinco

Faça transições de cena assim:

MySceneManager.TransitionAsync("my-target-scene", "my-loading-scene");

Ao invés de:

yield return SceneManager.LoadSceneAsync("my-loading-scene", LoadSceneMode.Additive);
yield return SceneManager.LoadSceneAsync("my-target-scene", LoadSceneMode.Additive);
SceneManager.SetActiveScene(SceneManager.GetSceneByName("my-target-scene"));
SceneManager.UnloadSceneAsync("my-loading-scene");
SceneManager.UnloadSceneAsync("my-previous-scene");

Essa mesma linha funciona tanto para cenas nas Build Settings quanto no Addressables.

Em um projeto real

O 3D Game Kit da Unity vem com seu próprio carregador de cenas por corrotina: fade out, carregar em modo single, teleportar o jogador, fade in.

Substituí-lo levou uma única chamada de TransitionAsync. A tela de carregamento virou uma cena, a configuração pós-carregamento passou para os eventos da operação, e o HUD do exemplo continuou carregado por todas as transições sem DontDestroyOnLoad.

Leia o estudo de caso

Toda chamada devolve um handle

Não é um callback registrado antes da chamada — é um objeto que você tem depois dela.

SceneOperation op = MySceneManager.TransitionAsync("my-target-scene", "my-loading-scene");

op.Progressed += progress => bar.value = progress;
op.StateChanged += o => { if (o.State == SceneOperationState.ScreenIn) BeginIntro(); };

SceneResult result = await op; // or op.Cancel(), or yield return op.ToCoroutine()
  • Progresso

    Um único número para a operação inteira, em vez de um AsyncOperation por cena para você mesmo somar.

  • Estados

    Resolving, ScreenIn, Unloading, Loading, Activating, ScreenOut, Completed — cada um informado no momento em que acontece.

  • Cancelamento

    Chame Cancel no handle. Sem token para propagar pelos seus pontos de chamada de antemão.

Quatro métodos, não sessenta e quatro

Carregar, descarregar, fazer transição e obter. A versão 5 reduziu toda a API a eles.

Uma string, qualquer origem

A mesma chamada encontra a cena nas Build Settings ou no Addressables. Sem uma segunda API para aprender.

Aguarde do seu jeito

Use await diretamente, converta para Task ou use yield return em uma corrotina. É sempre a mesma operação.

Um handle para cada operação

Progresso, estado do ciclo de vida, eventos por cena e cancelamento — disponíveis depois da chamada, não registrados antes dela.

Telas de carregamento além de cenas

Use uma cena, um prefab ou um documento de UI Toolkit, com um componente pronto para cada caso.

Acompanhe o que acontece

Uma camada de log relata cada etapa, então uma transição travada é diagnosticável em vez de misteriosa.

O que você escreveria no lugar

My Scene ManagerUnity Scene Manager
Carregamento de Cena Async
Descarregamento de Cena Async
Transição de Cena Async
Recarregamento de Cena Async
Múltiplas Cenas por Chamada
Estados do Ciclo de Vida
Cancelamento
Suporte a Async/Await
Tela de Carregamento Integrada
Integração com Addressables

Instale o pacote

Escolha seu método de instalação preferido.