より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Unityで動的に画像を読み込んでスライスする

Unityで動的に画像を読み込んで、指定の矩形を取得する場合

Sprite.Createを用います。以下のようなコード。

        var texture = Resources.Load<Texture2D>("Levels/tileset");
        var sprite =  Sprite.Create(texture, new Rect(32, 0, 32, 32), new Vector2(0.5f, 0.5f));

おまけ

これだけなのですが、動かすまでに意外と苦労しました。

あれ、画像が表示されない? なぜだ?と

Resources.Loadの引数にポイントがあって

  • パスはAsset/Resourcesの相対パス
  • /で始めない
  • .png拡張子は不要

となります。Resources.Loadで正しく取得できなかった場合は例外にはなりません。返り値がnullになります。

あと、たまにUnityのスクリプトの内容がゲームに反映されないことがありました。

ただ、この処理、重いらしく、多くの方がさまざまなアーキテクチャを検討されているようです。

参考にさせていただいた記事

qiita.com

qiita.com

stackoverflow.com

docs.unity3d.com

qiita.com