バックグラウンドのスレッドの優先順位を設定します。
バックグラウンドでロードしている間、「非同期的にデータをロードするのにかかる時間」か「ゲームへのパフォーマンス的影響」のどちらを犠牲にするかを制御します。
オブジェクトを非同期でロードする関数(Resources.LoadAsync、AssetBundle.LoadAssetAsync、AssetBundle.LoadAllAssetAsync)、シーンをロードする(Application.LoadLevelAsync、Application.LoadLevelAdditiveAsync) は、別スレッド(バックグラウンド ローディング スレッド)でデータの読み込みデシリアライズを行い、メインスレッドにオブジェクトをインテグレートします。
「インテグレーション」はオブジェクト型やテクスチャー向けに依存し、メッシュは GPU 側にデータをアップロードし、オーディオクリップは再生用データを準備することを意味します。
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.
これは、すべての非同期式の動作がメインスレッド上の単一フレーム内で費やすことができる最大時間です。
バックグラウンド ローディング スレッドは、直接、backgroundLoadingPriority を使用します。
// Load as much data as possible, as a result frame rate will drop. // Good for fast loading when showing progress bars. Application.backgroundLoadingPriority = ThreadPriority.High;
// Load data very slowly and try not to affect performance of the game. // Good for loading in the background while the game is playing. Application.backgroundLoadingPriority = ThreadPriority.Low;
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void Example() { Application.backgroundLoadingPriority = ThreadPriority.High; Application.backgroundLoadingPriority = ThreadPriority.Low; } }
関連項目: ThreadPriority 列挙体、AsyncOperation.priority。