Unity - Scripting API: Application.backgroundLoadingPriority

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Priority of background loading thread.

Lets you control how long it takes to load data asynchronously vs performance impact on the game while loading in the background.

Note: This setting has no effect in the Editor; it only applies in a built Player.

Asynchronous load functions that load objects (Resources.LoadAsync, AssetBundle.LoadAssetAsync, AssetBundle.LoadAllAssetAsync), scenes (SceneManager.LoadSceneAsync) do data read and deserialization on a separate background loading thread and object integration on a main thread. Integration depends on an object type and for textures, meshes means uploading data to the GPU, audio clips prepare data for playing.

To avoid hiccups we limit integration time on a main thread depending on backgroundLoadingPriority value:
- ThreadPriority.Low - 2ms
- ThreadPriority.BelowNormal - 4ms
- ThreadPriority.Normal - 10ms
- ThreadPriority.High - 50ms
This value defines the maximum time all asynchronous operations can spend within a single frame on a main thread.

The default value is ThreadPriority.BelowNormal, however some platforms override it:

Background loading thread uses backgroundLoadingPriority directly. This property's value is passed to the operating system as that thread's scheduling priority, with no conversion or indirection.

The Profiler marker Application.Integrate Assets in Background lets you optimize background loading.