はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】Texture2DからSpriteに変換をする

はじめに

今回はTexture2DからSpriteに変換する記事になります!

2DオブジェクトのSpriteやUIのImageなどのゲームオブジェクトにはTexture2DではなくSpriteを用います

そもそもTexture2DSpriteの違いはなんだろうと思い調べてみたところ、こちらの質問に対する回答が非常に分かりやすかったです。

teratail.com

この回答の結論として、

Texture=画像ファイル
Sprite=画像ファイルを実際に使う為にAsset化したもの

と表現されていました。

前置きが長くなってしまいましたが、実際にTexture2DからSpriteに変換してみましょう。

やり方

やり方はシンプルで、Sprite.Createメソッドを用いることでできます。

いくつかオーバーロードがありますが、一番簡単なものを紹介しておきます。

public static Sprite Create (Texture2D texture, Rect rect, Vector2 pivot);
引数 意味
texture Sprite のグラフィックスとして適用させるテクスチャ
rect Sprite に適用させるテクスチャの Rect 領域
pivot グラフィックスの Rect に対するピボット地点の相対位置

Sprite-Create - Unity スクリプトリファレンス

これを実際に使ってみると、

//Texture2Dを作成
Texture2D tex = new Texture2D(128, 128);

//Texture2DをSpriteに変換
Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.zero);

このようにすることで変換をすることができます。

さいごに

画像関係はtextureであったりspriteであったりbyte[]であったりと色々面倒ですよね。

うまく慣れたいものです。