読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

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

Texutre2Dのサイズ変更【Unity】


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

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

はじめに

Texture2DにはResizeというメソッドが用意されており、

これを使うことでサイズ変更を行う事が出来ます。

texture2D.Resize(width, height);


しかし、これを使うと画像が灰色になります。


f:id:kan_kikuchi:20150914135750p:plain


リファレンスを見ると以下の通りで、

サイズ変更した後、テクスチャピクセルは定義されません。この関数は、テクスチャコンストラクターと非常に似ています。

Unity - スクリプトリファレンス:Texture2D.Resize


サイズは変更出来るけど、色は無くなるよー初期化してるようなもんだねー。 (意訳)

という事らしいです。


TextureScale

Resizeメソッドの必要性はよく分かりませんが、とりあえず単純にリサイズができないらしく、

途方に暮れていた所、Unity Answersに同じような方がいました。



回答の中に、これ使えばいいよ!とTextureScaleなるものが挙げられていました。


TextureScale - Unify Community Wiki


実際にこのTextureScaleをコピペして作成し、以下のようなコードでリサイズが可能です。

//補完してして指定サイズに拡大or縮小
TextureScale.Bilinear (texture2D, width, height);

//補完せずにして指定サイズに拡大or縮小
TextureScale.Point    (texture2D, width, height);


Bilinearを使うと補完してくれて、ある程度綺麗に拡大ができます。

ドット絵等、補完されると逆におかしくなる場合はPointを使ったほうが良さげですね。