Async Scene Operation
The IAsyncSceneOperation
interface is a way to abstract non-addressable and addressable async operations.
The standard workflow returns an AsyncOperation
object, that does not link directly to the loaded scene, while the addressable workflow returns an AsyncOperationHandle<SceneInstance>
with a direct reference to the scene.
IAsyncSceneOperation
interface
The IAsyncSceneOperation
interface simply defines:
public interface IAsyncSceneOperation
{
event Action Completed;
float Progress { get; }
bool IsDone { get; }
bool HasDirectReferenceToScene { get; }
Scene GetResult();
}
It exposes an event to notify its completion, whether it's done and its progress, much like the regular AsyncOperation
and AsyncOperationHandle
.
Additionally, it also has a property to return whether this IAsyncSceneOperation
has a direct reference to a scene, and finally a method to get the resulting scene.
Implementations
There is one implementations of this interface for each workflow: AsyncSceneOperationStandard
and AsyncSceneOperationAddressable
.
AsyncSceneOperationStandard | AsyncSceneOperationAddressable | |
---|---|---|
Async Operation Type | AsyncOperation | AsyncOperationHandle<SceneInstance> |
Has Reference to Scene | ❌ | ✅ |
Creation
You don't need to manually create an IAsyncSceneOperation
, since it's done internally by the ISceneData
implementations when calling ISceneData.LoadSceneAsync
and ISceneData.UnloadSceneAsync
.
As the ISceneData
also has two implementations, it will create the correct IAsyncSceneOperation
type based on its workflow.