はじめに
複数のリソースを読み込む場合に
Resources.Load で一個ずつ読み込むか
Resources.LoadAll で一度に読み込むか
どちらの方が高速なのか気になったので検証しました
- Unityのバージョンは 4.6.1f1 で、Unity エディタ上で検証
- Resources フォルダに Textures フォルダを作成して
32 枚の 2048 x 2048 の白単色の画像を格納 - テクスチャの設定は Max Size 2048、Format は Truecolor
Project ビューの状態
テクスチャの設定
Resources.Load で一個ずつ読み込む速度の検証スクリプト
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { private void Awake() { var startTime = Time.realtimeSinceStartup; Resources.Load<Texture>( "Textures/0001" ); Resources.Load<Texture>( "Textures/0002" ); Resources.Load<Texture>( "Textures/0003" ); Resources.Load<Texture>( "Textures/0004" ); Resources.Load<Texture>( "Textures/0005" ); Resources.Load<Texture>( "Textures/0006" ); Resources.Load<Texture>( "Textures/0007" ); Resources.Load<Texture>( "Textures/0008" ); Resources.Load<Texture>( "Textures/0009" ); Resources.Load<Texture>( "Textures/0010" ); Resources.Load<Texture>( "Textures/0011" ); Resources.Load<Texture>( "Textures/0012" ); Resources.Load<Texture>( "Textures/0013" ); Resources.Load<Texture>( "Textures/0014" ); Resources.Load<Texture>( "Textures/0015" ); Resources.Load<Texture>( "Textures/0016" ); Resources.Load<Texture>( "Textures/0017" ); Resources.Load<Texture>( "Textures/0018" ); Resources.Load<Texture>( "Textures/0019" ); Resources.Load<Texture>( "Textures/0020" ); Resources.Load<Texture>( "Textures/0021" ); Resources.Load<Texture>( "Textures/0022" ); Resources.Load<Texture>( "Textures/0023" ); Resources.Load<Texture>( "Textures/0024" ); Resources.Load<Texture>( "Textures/0025" ); Resources.Load<Texture>( "Textures/0026" ); Resources.Load<Texture>( "Textures/0027" ); Resources.Load<Texture>( "Textures/0028" ); Resources.Load<Texture>( "Textures/0029" ); Resources.Load<Texture>( "Textures/0030" ); Resources.Load<Texture>( "Textures/0031" ); Resources.Load<Texture>( "Textures/0032" ); var result = Time.realtimeSinceStartup - startTime; Debug.Log( result ); } }
Resources.LoadAll で一度に読み込む速度の検証スクリプト
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { private void Awake() { var startTime = Time.realtimeSinceStartup; Resources.LoadAll<Texture>( "Textures" ); var result = Time.realtimeSinceStartup - startTime; Debug.Log( result ); } }
検証結果
方法 | 結果 |
---|---|
Resources.Load で一個ずつ読み込む | 2.8619552 秒 |
Resources.LoadAll で一度に読み込む | 2.8638346 秒 |
複数のテクスチャを読み込む速度はどちらの方法も概ね同じ速さでした
今回はテクスチャでのみ検証を行いましたが
他の種類のリソースも同じ結果になるかなと思っています