この記事でのバージョン
Unity 2017.2.0f3
はじめに
UnityではSprite ModeをMultipleにすると1枚の画像に複数のSpriteを設定する事が出来ます。
この複数のSpriteを全て取得する場合は、以下のようにResources.LoadAllを使います。
//Resources直下にあるUIのSpriteを全て取得 Sprite[] uiSprites = Resources.LoadAll<Sprite>("UI");
しかし、この方法はResources内に配置してある時にしか使えません。
なので、今回はResources外にあるMultipleなSpriteを取得する方法のご紹介です!
なお、記事中では以下のアセットを使っております。
Mobile Scifi GUI | 2D GUI | Unity Asset Store |
AssetDatabase.LoadAllAssetsAtPath
Resources外にあるMultipleなSpriteを取得するにはAssetDatabase.LoadAllAssetsAtPathを使います。
以下のように、LoadAllAssetsAtPathでSprite ModeをMultipleにした画像を指定する事で、
分割したSprite全てを取得出来ます。
//using UnityEditor; と using System.Linq; が必要 //Texture/UIのSpriteを全て取得 Sprite[] uiSprites = AssetDatabase.LoadAllAssetsAtPath("Assets/Texture/UI.png").OfType<Sprite>().ToArray();
なお、例の通りにusing UnityEditor;が必要なため、エディタ上だけの方法なのであしからず。