在画布中更改Gameobject z位置以使其前进

时间:2017-08-18 06:46:49

标签: unity3d

我有一个带有正交相机的2D场景,其中有一个带有多个GameObjects的Canvas。这些对象实际上是用户单击按钮时显示的对话框。

所有GameObject都是预先实例化的,我只是使用SetActive()来显示或隐藏它们。现在,如果用户点击按钮,他们确实会按预期看到GameObject,但如果他们点击另一个按钮而不关闭上一个窗口,则新GameObject(UI Window)会显示在已打开的窗口下方。

我发现改变的唯一真正方法是在Canvas中切换GameObjects层次结构顺序。但是,无论如何,我都需要以编程方式进行更改。

我尝试更改z值并添加spriterenders图层,但我在Unity编辑器中看到相同的顺序。它只会在我拖动GameObject并更改Canvas Hierarchy中的位置时更改。

如何通过脚本实现此目的?

1 个答案:

答案 0 :(得分:2)

你的问题是,当你在Canvas中渲染一些东西时,GameObject在层次结构中的位置很重要。实际上,canvas使用层次结构中的顺序进行z排序。

但您可以在脚本中影响层次结构中GameObject的顺序,如果要更改层次结构中GameObject的位置,请参阅Transform.SetSiblingIndexTransform.SetAsFirstSiblingTransform.SetAsLastSibling