我有一个带有正交相机的2D场景,其中有一个带有多个GameObjects的Canvas。这些对象实际上是用户单击按钮时显示的对话框。
所有GameObject都是预先实例化的,我只是使用SetActive()
来显示或隐藏它们。现在,如果用户点击按钮,他们确实会按预期看到GameObject,但如果他们点击另一个按钮而不关闭上一个窗口,则新GameObject(UI Window)
会显示在已打开的窗口下方。
我发现改变的唯一真正方法是在Canvas中切换GameObjects层次结构顺序。但是,无论如何,我都需要以编程方式进行更改。
我尝试更改z值并添加spriterenders
图层,但我在Unity编辑器中看到相同的顺序。它只会在我拖动GameObject并更改Canvas Hierarchy中的位置时更改。
如何通过脚本实现此目的?
答案 0 :(得分:2)
你的问题是,当你在Canvas中渲染一些东西时,GameObject在层次结构中的位置很重要。实际上,canvas使用层次结构中的顺序进行z排序。
但您可以在脚本中影响层次结构中GameObject的顺序,如果要更改层次结构中GameObject的位置,请参阅Transform.SetSiblingIndex,Transform.SetAsFirstSibling和Transform.SetAsLastSibling