# priority

> Integer representing the execution order priority of this AsyncOperation.

## Definition

* **Type:** Property
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public int priority { get; set; }
```

### Remarks

When multiple asynchronous operations are queued, the operation with the higher priority executes first. A higher integer value represents a higher priority. For example, asynchronous operations execute in the order 3, 2, 1 and so on. The default priority is 0. Once an operation has been started on the background thread, changing the priority has no effect.

### Examples

```csharp
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class AsyncPriorityDemo : MonoBehaviour
{
    [Header("Scene names to load (must be in Build Profile > Scene List)")]
    [SerializeField] private string highPriorityScene = "GameplayLevel";
    [SerializeField] private string mediumPriorityScene = "Lobby";
    [SerializeField] private string lowPriorityScene = "Credits";

    private void Start()
    {
        StartCoroutine(LoadScenesWithPriorities());
    }

    private IEnumerator LoadScenesWithPriorities()
    {
        Debug.Log("Starting concurrent scene loads with different priorities...");

        AsyncOperation highOp = SceneManager.LoadSceneAsync(highPriorityScene, LoadSceneMode.Additive);
        AsyncOperation mediumOp = SceneManager.LoadSceneAsync(mediumPriorityScene, LoadSceneMode.Additive);
        AsyncOperation lowOp = SceneManager.LoadSceneAsync(lowPriorityScene, LoadSceneMode.Additive);

        // Assign priorities. A higher value means the operation is given more
        // processing time relative to other running async operations, so it
        // tends to complete sooner. allowSceneActivation is left enabled (the default),
        // so each scene activates as soon as its load finishes.
        highOp.priority = 3;    // Most urgent.
        mediumOp.priority = 1;  // Normal urgency.
        lowOp.priority = 0;     // Least urgent.

        Debug.Log($"Priorities assigned -> " +
                  $"{highPriorityScene}:{highOp.priority}, " +
                  $"{mediumPriorityScene}:{mediumOp.priority}, " +
                  $"{lowPriorityScene}:{lowOp.priority}");

        while (!highOp.isDone || !mediumOp.isDone || !lowOp.isDone)
        {
            Debug.Log($"Progress -> " +
                      $"High: {highOp.progress:P0}, " +
                      $"Medium: {mediumOp.progress:P0}, " +
                      $"Low: {lowOp.progress:P0}");
            yield return null;
        }

        Debug.Log("All scenes loaded. Load sequence complete.");
    }
}
```
