(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

Resources外にあるMultipleなSpriteを取得する【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2017.2.0f3


はじめに

UnityではSprite ModeをMultipleにすると1枚の画像に複数のSpriteを設定する事が出来ます。


f:id:kan_kikuchi:20171021121312j:plain
f:id:kan_kikuchi:20171021121323j:plain


この複数のSpriteを全て取得する場合は、以下のようにResources.LoadAllを使います。

//Resources直下にあるUIのSpriteを全て取得
Sprite[] uiSprites = Resources.LoadAll<Sprite>("UI");

f:id:kan_kikuchi:20171021121603j:plain


しかし、この方法はResources内に配置してある時にしか使えません。

なので、今回はResources外にあるMultipleなSpriteを取得する方法のご紹介です!


なお、記事中では以下のアセットを使っております。





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();

f:id:kan_kikuchi:20171026085621j:plain


なお、例の通りにusing UnityEditor;が必要なため、エディタ上だけの方法なのであしからず。