前回、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