# LoadableStatus

> Describes the current loading phase of a Loadable<T> after Loadable<T>.Load or Loadable<T>.LoadAsync is used.

## Definition

* **Type:** Enum
* **Namespace:** [Unity.Loading](/engine/6000.7/script-reference/unity/loading.md)
* **Assembly:** UnityEngine.ContentLoadModule

```csharp
public enum LoadableStatus
```

## Remarks

Query [Loadable\<T>.Status](/engine/6000.7/script-reference/unity/loading/loadable1/status.md) to drive UI or to assert that a load finished before reading [Loadable\<T>.Target](/engine/6000.7/script-reference/unity/loading/loadable1/target.md). [LoadableStatus.Failed](/engine/6000.7/script-reference/unity/loading/loadablestatus/failed.md) indicates the asynchronous load completed without a usable object. This often occurs due to missing built content.

## Examples

```csharp
using Unity.Loading;
using UnityEngine;

namespace BuildDocExamples
{
    // Example: use LoadableStatus to react to the outcome of a load. After awaiting
    // LoadAsync, Status is either Loaded (Target is usable) or Failed (Target is null,
    // typically because the content is missing from any registered content directory).
    public class LoadableStatus_Example
    {
        // On success this returns Target to the caller.  The caller owns the passed-in Loadable
        // and must call Release() on it when done using the texture. The caller
        // must not load or await this Loadable again before releasing it, otherwise the cached
        // load operation throws.
        public async Awaitable<Texture2D> TryGetTextureAsync(Loadable<Texture2D> icon)
        {
            // Before loading, Status is None. It becomes Loading while the operation runs.
            await icon.LoadAsync();

            switch (icon.Status)
            {
                case LoadableStatus.Loaded:
                    // The load succeeded and Target holds the asset.
                    return icon.Target;
                case LoadableStatus.Failed:
                    // The load completed without a usable object. Target is null.
                    Debug.LogWarning($"Failed to load {icon}.");
                    return null;
                default:
                    // None or Loading are not expected once LoadAsync has been awaited.
                    return null;
            }
        }
    }
}
```

## Fields

| Value                                                                              | Description                                   |
| ---------------------------------------------------------------------------------- | --------------------------------------------- |
| [Failed](/engine/6000.7/script-reference/unity/loading/loadablestatus/failed.md)   | The loading operation completed but failed.   |
| [Loaded](/engine/6000.7/script-reference/unity/loading/loadablestatus/loaded.md)   | The loading operation completed successfully. |
| [Loading](/engine/6000.7/script-reference/unity/loading/loadablestatus/loading.md) | The loading operation has begun.              |
| [None](/engine/6000.7/script-reference/unity/loading/loadablestatus/none.md)       | The Loadable has not begun loading.           |
