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

(:3[kanのメモ帳]

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

SpriteRendererで9Slice【Unity】


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

この記事でのバージョン
Unity 5.5.1f1


はじめに

今回はSpriteRendererで9Sliceをしてみようという記事です。

以下はイメージで、左がそのままスケールしたもの、右が9Sliceしてスケールしたものです。


f:id:kan_kikuchi:20170301122304g:plain


使用している画像は以下のものです。



なお、Unity5.6で追加される(されている?)公式のものではありませんのであしからず。





9スライスとは

そもそも9スライスとは、以下のように画像を9分割し、分割した領域毎に拡大するといったものです。


f:id:kan_kikuchi:20170301121327p:plain


例えば左上の領域は拡大をせず、真ん中上の領域は左右にのみ拡大をするといった感じです。

なお、uGUIでは既に公式で対応されています。





NineSlicedShader

前述の通り、Unity 5.5時点では公式でSpriteRendererの9Sliceは対応されていないので、

今回は以下の記事のシェーダーをお借りして実装してみます。



ページ下部にあるRickshao/NineSlicedShaderをコピペして、シェーダーを作成、

さらに以下のNineSlicedProvider.csを作成。



このNineSlicedProviderを

9SliceしたいSpriteRendererが付いているオブジェクトにAddすればOKです。


なお、Materialが自動的に置き換わるので注意が必要です。


f:id:kan_kikuchi:20170301123412g:plain


また、SpriteModeがMultipleの画像には対応していませんので、あしからず。


f:id:kan_kikuchi:20170301123152p:plain
f:id:kan_kikuchi:20170301123231p:plain