Resources.LoadAll(“フォルダ名”);
これだけでフォルダ内のファイルを一括読み込みすることができる。
大量の画像を並べて選択したいときなんかに重宝する。
Unityのバージョンの変化とかで手間取ったので覚書。
フォルダを作り2つのpngファイルを入れて以下のスクリプトで読み込む。
1 |
Texture2D[] ts = (Texture2D[])Resources.LoadAll("molds"); |
すると以下のキャスト例外が発生した。
InvalidCastException: Cannot cast from source type to destination type.
キャスト前のオブジェクトのサイズは4となっていてファイル数の倍になっている。
中身を見てみると Texture2D と Sprite がそれぞれ入ってた。
つまりこういうことか!と思って次の書き方に変えたけどこれもダメだった。
1 |
Texture2D[] ts = (Texture2D[])Resources.LoadAll("molds",typeof(Texture2D)); |
Version5.4の説明とVersion5.5の説明を比べてみると、配列のキャストがなくなってるのでこれはできなくなったみたい。
Version2017.1を見るとtypeofで指定した上でobj配列に入れるのが正しいようだ。
1 2 3 4 |
Object[] objs = Resources.LoadAll("floder",typeof(Texture2D)); foreach (Texture2D tex in objs){ ... } |
ググって出てくるリファレンスはたいてい5.4のものなので、きちんとバージョンに合わせたリファレンスを見ないといけないですね。