7080 + 1

ゲームプログラミングの記事を書いてます。

【Unity】特定のフォルダ以下にある特定の Object をリストで取得する

久しぶりの更新です。
よく書く割に地味に書き方を忘れるので、自分用のメモ代わりに書きます。
System.IO を使えば結構簡単にできます。
directoryPath 以下にある T型を持ったアセットをすべて取得してきます。

IReadOnlyList<T> FindAllAsset<T>(string directoryPath) where T : UnityEngine.Object
{
    List<T> assets = new List<T>();
    var fileNames = Directory.GetFiles(directoryPath, "*", SearchOption.AllDirectories);

    foreach (var fileName in fileNames)
    {
        var asset = AssetDatabase.LoadAssetAtPath<T>(fileName);
        if (asset != null)
        {
            assets.Add(asset);
        }
    }

    return assets;
}

※LoadAllAssetsAtPath() は使っていないので、ネストになってるアセットまでは取得できません。