Conceitos Chave
Existem algumas estruturas-chave que você precisa entender para se aprofundar na lógica do My Scene Manager.
Arquitetura
Esta é uma visão geral da arquitetura do My Scene Manager. Vamos explorar cada componente nas próximas páginas. Veja o fluxograma:
- O
MySceneManageré uma implementação estática de umCoreSceneManager, que por sua vez contém toda a lógica para realizar Operações de Cena. - O
CoreSceneManageré uma implementação da interfaceISceneManager, que define quatro métodos async:LoadAsync,UnloadAsync,TransitionAsynceReloadActiveSceneAsync. Um nome, um índice de build, um endereço, umAssetReferenceou um array de qualquer um deles chegam todos no mesmo método, porqueSceneParametersconverte a partir de cada um deles. - A struct
SceneParametersé uma abstração para tratar um únicoSceneRefou vários (SceneRef[]), além de qual deles deve ser ativado. - A struct
SceneRefé uma referência a uma cena. É uma única struct com um discriminadorSceneRefKind, em vez de uma família de tipos, o que evita o boxing dos índices de build. - Uma string pura é uma
Key, que oSceneRefResolverresolve em um índice de build ou um endereço antes de a operação rodar. - O
SceneBackendRegistryescolhe umISceneBackendpara cada tipo resolvido — o Unity Scene Manager padrão ou o Addressables — e o backend devolve umSceneBackendHandle. - O
SceneOperationPumpatualiza (tick) os handles ativos no player loop, que é o que reporta o progresso e retoma os awaiters sem uma ida e volta por umaTask. - Toda operação retorna um
SceneOperationimediatamente, de forma síncrona, como um handle vivo do trabalho. UmSceneOperationconcluído carrega umSceneResult, que pode conter uma ou várias cenas.
Operações de Cena se refere às operações de carregamento (Load), descarregamento (Unload) e transição (Transition). Uma operação de recarregamento (Reload) é considerada uma operação de transição.
Vamos cobrir cada uma dessas estruturas nas próximas páginas.
Três desses são nomes novos para coisas que você já conhece — SceneRef no lugar de ILoadSceneInfo, ISceneBackend no lugar de ISceneData, SceneOperation no lugar da Task retornada. O guia de atualização mapeia todos os métodos.
Se você é novo no pacote, pode ignorar isso completamente.