我注意到画布中的元素是从上到下绘制的,所以上面的图片会被下面的图片覆盖。问题是我想让一个不是画布最后一个兄弟的ui图片保持在所有其他图片的顶部。我该怎么做?
yhxst69z1#
我认为你可以尝试两种方法。
第一
使用Transform.SetAsFirstSibling()将UI组件放在顶部
Transform.SetAsFirstSibling()
第二
使用CanvasGroup.sortingOrder来帮助您的UI组件分组。
CanvasGroup.sortingOrder
参考号
http://docs.unity3d.com/Manual/class-CanvasGroup.htmlhttp://docs.unity3d.com/ScriptReference/Transform.html
ttcibm8c2#
您可以使用两个函数来设置订单
Transform.SetAsFirstSibling Transform.SetAsLastSibling Transform.SetSiblingIndex
7vhp5slm3#
我想对Ethan的答案进行编辑,但似乎编辑队列已满,所以我在这里写它。CanvasGroup解决方案不起作用。除了更改兄弟索引(层次结构位置)之外,您的另一个选择是创建一个新的Canvas,并让它覆盖其父画布的排序顺序,并向新画布的排序顺序添加一些偏移量。以下是您如何在inspector中手动完成的:
我还创建了this simple script/component,它动态地完成这项工作:
3条答案
按热度按时间yhxst69z1#
我认为你可以尝试两种方法。
第一
使用
Transform.SetAsFirstSibling()
将UI组件放在顶部第二
使用
CanvasGroup.sortingOrder
来帮助您的UI组件分组。参考号
http://docs.unity3d.com/Manual/class-CanvasGroup.htmlhttp://docs.unity3d.com/ScriptReference/Transform.html
ttcibm8c2#
您可以使用两个函数来设置订单
7vhp5slm3#
我想对Ethan的答案进行编辑,但似乎编辑队列已满,所以我在这里写它。CanvasGroup解决方案不起作用。除了更改兄弟索引(层次结构位置)之外,您的另一个选择是创建一个新的Canvas,并让它覆盖其父画布的排序顺序,并向新画布的排序顺序添加一些偏移量。以下是您如何在inspector中手动完成的:
我还创建了this simple script/component,它动态地完成这项工作: