テクノモンキーのアプリ開発日記

テクノモンキーの開発ブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsやアプリ開発に役立つ情報を発信します。

【Unity】ゲームオブジェクトの表示順(レイヤーの重ね順)の問題を解決する方法

Unityでアプリを作っている時に、

UIのImageとSpriteの表示順(レイヤーの重ね順)が意図した順番にならなくて困ったので今後の為にメモ。

 

ゲームオブジェクトの重ね順が意図した表示にならない

 

やりたいことを簡単にまとめると、

  • SpriteAとImageBが重なった状態
  • SpriteAをImageBよりも前面に表示したい

という感じです。

 

【Unity】ゲームオブジェクトの表示順(レイヤーの重ね順)の問題を解決する方法

Hierarchy上で順番を変更してみたり、ゲームオブジェクト毎にレイヤーを分けてソート順を設定してみたものの、意図した表示になりません..

Z軸の値を変えればオブジェクト毎に奥行きが出てうまいこと重ね順ができるかなと思ったのですが、それもうまいこと表示できません。

多分、ちゃんとした手順でやればUIのImageでもSpriteでも同様に処理できるかとは思ったのですが、できるだけ簡単に重ね順の問題を解決したかったので何かいい方法がないか調べてみました。

 

ゲームオブジェクトの表示順(レイヤーの重ね順)の問題を解決する方法

 

調べた結果、以下の記事が参考になりました。

qiita.com

 

手法としては、重ね順を決めたいゲームオブジェクトにCanvasコンポーネントを追加して、Sort Orderの値によって重ね順を定めるというものです。

 

上記の記事を参考に順序を指定したいゲームオブジェクトにCanvasを追加し、Sort Orderで順番を指定したところ無事解決できました。

 

【Unity】ゲームオブジェクトの表示順(レイヤーの重ね順)の問題を解決する方法

 

この方法ならかなり簡単に順序を指定できるので、もし重ね順に困った時は上記の手法を使いたいと思います。