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

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

UnityのuGUIとImageとSpriteとスライスについて

2D GUI(uGUI/NGUI/旧UI) ゲームの作り方・チュートリアル・サンプル 最適化・デバッグ Unity Sprite

uGUIのスライスは覚えておくと便利な機能です。

今回はコレを作ろうと思いましたが、スライス部分が予想以上に色々と出来たので分割します。コレの作り方は次回。

f:id:tsubaki_t1:20150219232015g:plain

目次

スライスする方法

Spriteを選択し、SpriteEdit。エディット画面で緑色の部分を調整します。

f:id:tsubaki_t1:20150219232425p:plain

f:id:tsubaki_t1:20150219232439p:plain

大きさを調整する

スライスしたスプライトは外側のパーツを固定したまま、内側のパーツを引き伸ばすことが出来ます。Imageにスプライトを設定しSlicedを設定すれば、下のように引き伸ばすことが出来るようになります。

f:id:tsubaki_t1:20150219235021p:plain

f:id:tsubaki_t1:20150219232829g:plain

この機能の面白い所は、Tiledにした際に「項目を繰り返す」事です。例えば下のように切り抜いたスプライトがあった場合、引き伸ばすと面白い結果が得られます。

f:id:tsubaki_t1:20150219233255p:plain

見て分かる通り、引き伸ばした際に「スプライトの途中を繰り返して伸ばす」ような挙動を行います。このため、ある程度以上の長さになった場合も少し自然にスプライトが配置できそうです。

f:id:tsubaki_t1:20150219233416g:plain

この機能でサイズを調整した際の角の大きさですが、元のスプライトのサイズに依存します。つまり、想定解像度とスプライトの比が関係します。

 

大きさを調整するには、Pixels Per Unitで大きさを調整するか、想定解像度をCnavasScalorで変更する事が有効です。

f:id:tsubaki_t1:20150219233057p:plain

f:id:tsubaki_t1:20150219235529p:plain

f:id:tsubaki_t1:20150219235538p:plain

真ん中を塗りつぶさないでフィルレートを節約する

もう一つ、スライスしたスプライトの中央部分はFillCenterのチェックを外した際に描画されない特徴があります。例えば下のようにくり抜くとします。

f:id:tsubaki_t1:20150219234557p:plain

この状態でFillCenterを抜くと、中央の透明部分が抜き取られ、フィルレートを大幅に節約することが出来ます。現状の描画コストは大体「凄いシェーダー」「フィルレート」「レンダーステート切替」の3つなので、これでフィルレートの節約ができる事は非常に有用です。

f:id:tsubaki_t1:20150220000007p:plain

オレンジ色の部分が実際に描画される範囲です。FillCenterのチェックを外す事で、中央部分がキッチリ繰り抜かれ描画部分が最小限になっている事が分かります。

f:id:tsubaki_t1:20150219234747p:plain

f:id:tsubaki_t1:20150219234759p:plain