Async Scene Operation
A interface IAsyncSceneOperation é uma forma de abstrair operações assíncronas addressable e não-addressable.
O fluxo padrão retorna um objeto AsyncOperation, que não vincula diretamente à cena carregada, enquanto o fluxo addressable retorna um AsyncOperationHandle<SceneInstance> com uma referência direta à cena.
Interface IAsyncSceneOperation
A interface IAsyncSceneOperation define:
public interface IAsyncSceneOperation
{
event Action Completed;
float Progress { get; }
bool IsDone { get; }
bool HasDirectReferenceToScene { get; }
Scene GetResult();
}
Ela expõe um evento para notificar sua conclusão, um indicador de progresso e um booleano que informa se a operação foi concluída — semelhante ao AsyncOperation e ao AsyncOperationHandle.
Além disso, possui uma propriedade que indica se a operação possui uma referência direta a uma cena e um método para obter a cena resultante.
Implementações
Há uma implementação dessa interface para cada fluxo: AsyncSceneOperationStandard e AsyncSceneOperationAddressable.
AsyncSceneOperationStandard | AsyncSceneOperationAddressable | |
|---|---|---|
| Tipo de Async Operation | AsyncOperation | AsyncOperationHandle<SceneInstance> |
| Tem Referência à Cena | ❌ | ✅ |
Criação
Você não precisa criar manualmente uma IAsyncSceneOperation, já que isso é feito internamente pelas implementações de ISceneData ao chamar ISceneData.LoadSceneAsync e ISceneData.UnloadSceneAsync.
Como o ISceneData também possui duas implementações, ele criará o tipo correto de IAsyncSceneOperation com base em seu fluxo.