Unity - Scripting API: Application.backgroundLoadingPriority
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.
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.
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:
- Universal Windows Platform - ThreadPriority.High
- Consoles - ThreadPriority.Normal
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.