Unity Resources.LoadAll メソッド技術資料

概要

Resources.LoadAll メソッドは、Unityプロジェクト内の Resources フォルダに配置された特定のパスにあるアセットを一括でロードするための機能です。指定したパスに一致するすべてのオブジェクトを指定した型で取得することができます。

基本構文

Object[] objects = Resources.LoadAll("Path/To/ResourceFolder");
  • Resources.LoadAll は指定したパス内のアセットを配列形式で返します。
  • パスは Resources フォルダを基準とし、拡張子は不要です。
  • アセットの型を指定して、特定の型のみを取得することも可能です。

引数の詳細

  • パス (string 型)
    • Resources フォルダを基準としたパスを指定します。
    • アセットが Resources フォルダのサブフォルダにある場合、そのサブフォルダのパスを含めます。ファイル名の拡張子は不要です。
   // 例: Resources/Images フォルダ内の全てのアセットをロード
   Object[] images = Resources.LoadAll("Images");
  • 型 (System.Type またはジェネリック型)
    • 読み込むアセットの型を指定すると、特定の型のアセットのみをロードします。
    • 型を指定することで、必要なデータ型のみを効率的に取得することができます。
   // 例: Texture2D 型のアセットのみをロード
   Texture2D[] textures = Resources.LoadAll<Texture2D>("Textures");

使用例

以下のコードは、 Resources/Textures/Backgrounds フォルダ内のすべての Texture2D 型のアセットを配列で取得し、それぞれの名前をコンソールに出力します。

Texture2D[] textures = Resources.LoadAll<Texture2D>("Textures/Backgrounds");
foreach (Texture2D texture in textures)
{
    Debug.Log(texture.name);
}

使用上の注意

  • Resourcesフォルダ内のアセットのみを対象
  • Resources フォルダの外にあるアセットは Resources.LoadAll で読み込むことはできません。アセットが Resources フォルダにあることを確認してください。
  • パフォーマンス
  • Resources.LoadAll は指定されたパスにある全てのアセットを一括でメモリにロードします。大量のアセットを頻繁にロードするとパフォーマンスが低下する可能性があるため、使用頻度やタイミングに注意が必要です。
  • 一度にロードするオブジェクトが多い場合は、特にデバイスのメモリ使用量に気を配る必要があります。必要のないアセットは Resources.UnloadUnusedAssets を利用してメモリから解放することも考慮してください。

応用例

ゲーム内でアイテムのアイコンや、背景画像など、特定のカテゴリに属するリソースを一括でロードしてUIに反映したり、アニメーション用の素材を読み込む際に便利です。

Sprite[] itemIcons = Resources.LoadAll<Sprite>("Icons/Items");
foreach (Sprite icon in itemIcons)
{
    // アイコンをUIに追加する処理
}

まとめ

  • Resources.LoadAll は、特定のパス配下にあるアセットを一括でロードするためのメソッドです。
  • 必要なパスと型を指定することで、効率的にアセットを取得できます。
  • 使用の際はメモリやパフォーマンスの管理を考慮する必要があります。

C#

Posted by hidepon