質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

2回答

10883閲覧

Canvasの上にSpriteを表示したい

jabu

総合スコア38

0グッド

0クリップ

投稿2019/07/02 18:59

編集2019/07/02 19:03

Unityにてゲームを開発中です。

SortingLayerでCanvasのレイヤー順を変えたいのですがうまくいきません。

やりたいことはCanvasの上にスプライトを表示したいです。

●試したこと
カメラを揺らした時に揺らしたくないので、Canvas renderModeは「Screen Space - OverLay」のまま。

下に表示するCanvasにAdd ComponentでSorting GroupでSortingLaye「NewLayer」を指定。
上に表示するスプライトに「SpriteLayer」を指定。
Tags & LayersでSortingLayersの順番を入れ替える。

以上を試したのですが順番がかわらないです。

もしかしたら、Canvasは常に最前面にしか表示できないのでしょうか?

どなたかご教授をお願い致します。

追記します。
一番上に表示したいSpriteはカメラの影響を受けたいのでCanvasやImageではなくそのままSpriteとして配置したい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Screen Space Overlay を指定する限り、常に最前面に表示されます

Screen Space Camera を使えば、それより前に描画することは出来ます
ただ、ワールドスペースにcanvasを置くので、
書割の位置がどこにあるのか、というのは意識する必要があります

カメラの影響を受ける、受けないの意味がよくわかりませんが、
Screen Space Camera を使えば、Overlay と位置関係は変わらない表示になるはずです

投稿2019/07/03 01:14

izmktr

総合スコア2856

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

uGUI(Canvas)とSprite(2Dオブジェクト)の場合、
「Screen Space - OverLay」の状態だと必ずuGUIが上に来るので入れ替えは無理です。

カメラの揺れだけが問題なら、
新規にカメラを1つ作り、通常のカメラより下に描画するように設定。
(上に来る側のCameraコンポーネントの「Clear Flags」を「Depth Only」に。「Depth」の値を上に来るカメラの方が大きくなるようにする)
その後CanvasのRender Modeを「Screen Space - Camera」に変更し、「Render Camera」に新規で作ったカメラをドラッグ&ドロップすればいいです。
この設定をすれば常にCanvas側が下になるので、SortingLayerの設定は不要です。

(なお通常カメラで背景まで描画している場合はCanvasが塗り潰されてしまうので、「背景用カメラ<Canvas用カメラ<Sprite用カメラ」と3つ重ねる必要があるかと思います)

投稿2019/07/03 01:12

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jabu

2019/07/03 07:05

izmktrさま sakura_hanaさま ご回答ありがとうございました。無事に解決できました。とても勉強になりました。今後とも宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問