【Unity】Sprite用のテクスチャを作る(2019.3)
こんにちは。
UnityのSprite機能を使う必要が出てきたので、Sprite用のテクスチャについて調べた事を書きたいと思います。
Sprite用テクスチャをつくる方法
Spriteを使う場合は、テクスチャのTexture Typeを「Sprite(2D and UI)」に変更します。
これでApplyボタンを押せばテクスチャがSprite用になります。
Projectタブで下図のような表示になっていればOKです。
必要な設定はこれだけですが、もし下図のようにアルファで抜かれたテクスチャであれば、Alpha Sourceが「Input Texture Alpha」に、Alpha is Transparencyが「有効」になっている事を確認します。
アルファ情報を保持したpngやtgaを使う場合は忘れずに確認しておきましょう。
もしアルファを使わない場合はAlpha Sourceを「None」にしておくとファイルサイズが減るので、必要に応じて切り替えるのがいいと思います。
補足ですが、Spriteは0か1かの2値化したテクスチャだけでなく、ボカしたテクスチャも使用する事ができます。
Spriteはメッシュになる
Spriteは普通のテクスチャと違い、アルファ値0の部分を削った状態のメッシュに変換されます。
下図は同じSpriteをワイヤーフレーム表示した状態です。
エフェクトでは通常、描画面積を減らすためにメッシュを自作してそれにテクスチャを貼りますが、自動でメッシュ化してくれるのはありがたいですね!
Spriteのメッシュ分割数を減らす方法はある?
ワイヤーフレームの画像を見て思った方もいるかもしれませんが、自動生成されたメッシュは細かく分割されているため、たいぶ頂点数が多いですね。
頂点数を減らす方法は2つあります。
1つはSprite用テクスチャの解像度を減らす方法、もう1つは手動で頂点数を減らす方法です。
1つ目の「テクスチャの解像度を減らす方法」を見ていきましょう。
同じテクスチャでも、単純に解像度を減らすだけで下図のように大きく頂点数が削減されます。
でも、頂点数のために解像度を犠牲にしなければならないのはちょっと残念ですね。そういう時には2つめの「手動で頂点数を減らす方法」も試してみましょう。
手動で減らすには、SpriteのInspectorから「Sprite Editor」をクリックします。
すると専用のタブが開くので、左上の項目から「Custom Outline」を選びます。
するとメニューが切り替わるので、「Generate」を押します。
Genarateを押すと、下図のように自動で単純なポリゴンに割ってくれます。
ここでの主要な操作は以下になります。
- 頂点の追加:メッシュのアウトラインにマウスカーソルを合わせて左クリック
- 表示の拡大縮小:マウス中ホイールスクロール
- 表示箇所の移動:中クリック + 移動
頂点をポチポチ追加したり移動したりして調整したのがこちらになります。
調整できたらメニューの「Apply」ボタンを押して変更を保存します。
これでSceneビューを見てみると、先程は頂点数が多かった1024x1024のスプライトも、下図のように256x256とほぼ変わらない数まで減らす事ができました!
「これいいじゃん!」と思いたいところですが、この手法には1つ欠点があります。それは、「Spriteの絵柄を変えてもメッシュの形状が変わらない」です。
当たり前っちゃ~当たり前ですよね。
せっかく手動で調整したものが、テクスチャを調整する度に勝手にリセットされてしまったら困りますもんね。
ただ、テクスチャを調整する度に毎回手動でポリゴン調整するのは大変なので、もしこの機能を使う場合は制作の最終段階、「もうテクスチャは触らないし少しでも処理負荷を減らしたい」って時に行うのがいいように思います。
おわりに
今回はSpriteテクスチャの基本で大事そうな部分について書いてみました。
自動で無駄な描画を省いてくれたり、手動でもコントロールできたりと便利な機能ですね。
次回は今回作ったSpriteを実際にシーンに置いて、ソート順のコントールとマスク処理について書いてみたいと思います。