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