ResourcesからスライスしたSpriteを取得する3つの方法
単純なSingleSpriteならばResources.Load
このスライス済みスプライトについては、Resources.LoadAllで一旦全部取得してから、必要なスプライトを取り出すといった工程が必要になる。(無駄のように思えるたが、結局単一を取り出しても分割前のテクスチャをロードしてるので誤差な気がす)
例えば下のコードでスプライト元になったテクスチャ名とスプライト名を取得すれば、スプライトが取得できる。
文字列検索を使いたくない場合は、事前にenumを作成しておく。
Resourcesフォルダからパック済みSpriteを取得する際、文字列検索ではなくenumで呼び出したい - テラシュールブログ
ちなみにResoucesに配置したスプライトはSpritePackerでパック出来ない欠点がある。なので、ドローコールを減らすにはSpritePackerに頼らずTexturePacker等でパック・スライスするといったアプローチが必要だ。
TexturePackerで一つにまとめたテクスチャをUnity 2Dのスプライトで使う - テラシュールブログ
もしどうしてもSpritePackerが使いたい場合、若干間接的だが, ResourcesにSpriteをアタッチしたプレハブを配置し 、呼び出すといった方法がある。
下のスクリプトをインポート後、Sprite(親のテクスチャではない)を選択してSpriteToPrefabを実行すると、Spriteのアセットが作られる。
ちなみに、Spriteのみのアセットを作成し配置する事も考えたが、どうもこの手法だとパックしたテクスチャを使用しないらしい。ドローコールが元のテクスチャ単位で発行された。
ただ、この方法で生成したSprite.assetはResouces.Load
最後にSprite.Create(texture, rect, pivot);でランタイム生成するって手もある。その際、UV情報の取得等は手前でやる必要があるので、その辺り注意。
Spriteランタイム生成についてはまた今度