LoginSignup
0
0

More than 5 years have passed since last update.

[Unity] InstantiateしたGameObjectをUIの背面に表示したい備忘録

Posted at

前回、Canvas内でImageをInstantiateする備忘録を書きました。
Kogarasi様、アドバイスいただきありがとうございました!

あれから、ちょちょっと手を加え、UIなども追加しました。
そこでまた問題が出てしまったのです。。。
InstantiateされたGameObjectがUIの前面に表示されてしまう問題。。。

Canvas内にContainerを用意してInstantiateさせる

Canvas内は下に配置されればされるほど表示順が高くなる。
今回の原因はボタンを配置したのですが、Canvas内でボタンを一番下に配置しようがしまいがInstantiateしたGameObjectが無条件でCanvas内の一番下にCloneされてしまう。
どうにかボタンより上にGameObjectをCloneできないものかと。。。

今回は簡単に見つかりました。解決策。
参考にさせていただいたサイトは後ほど。

前回CanvasとGameObjectを親子要素で紐付けました。
それがどうやらいけないようでした。
今回はCanvas内にContainerを追加してその中でCloneさせることにしました。

前回
prefab.transform.SetParent(canvas.transform, false)
にしておりましたのでCanvasとの親子関係になっていました。

そこを
prefab.transform.SetParent(Container.transform, false)
に。
変更点は
Canvas.transformをContainer.transformにしました。

これで実行してみると、GameObjectがContainerとの親子関係となりContainerの中にCloneされるようになりました。
UIもGameObjectより前面に表示されました。
ここで注意したいのがContainerの位置です。
前面に表示させたいUIより下に配置してしまうと意味がありません。
必ず、前面に表示させたいUIより上に配置する。

まとめ

今回は文字が多くなってしまった。
後で見返した時訳分からなくなりそう。。。
そのうち見やすく編集します。そのうち。。。

今回参考にさせていただいたサイト↓
http://gamenosirusi.blog.fc2.com/blog-entry-9.html

なんのこっちゃという人は前回の記事からお読みください↓
http://qiita.com/tibe/items/5e1ae977c31cdbec1e60

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0