UnityではSprite ModeをMultipleに設定することで、1枚の画像ファイルから複数枚のSpriteを作成する機能があります。ただ、これで作成したSpriteは基本的に全く別のSpriteとして扱われるので、スクリプトから操作したい時に少し不便なことがあります。
そこで、スクリプトで複数枚のSpriteに変換する方法はないかなと思って調べてみたところ、Sprite.Create
を使って作成する方法が簡単かなという感じでした。
使い方
Texture2D texture;
for(...) {
var rect = new Rect(x, y, width, height);
Sprite.Create(texture, rect, new Vector2(0.5f, 0.5f), 100.0f);
}
Rect
で指定した範囲のSpriteが作られるので、この値を変えていきながら分割していくという形です。
実行時に毎回Sprite.Create
を実行することになるのでパフォーマンス的には不利になると思いますが、実用上は問題ないかなと思います。
リンク
Unity – Scripting API: Sprite.Create
https://docs.unity3d.com/ScriptReference/Sprite.Create.html
Unity – Manual: Sprite Editor
https://docs.unity3d.com/Manual/SpriteEditor.html