如何在bevy中用绝对定位显式描述UI元素的Z顺序?

问题描述

我有以下情况:

  • 父级Node,占据了所有屏幕空间。
    • 顶栏的孩子。
    • 游戏区的孩子。
    • 底部栏的孩子。
    • 一个绝对定位的叠加层子级,不得与上面的三个绑定。

我无法完全实现上述要求,因为我找不到至少使用认的UiCameraComponents来定义子级z顺序的方法。这是我尝试过的:

  • 向绝对定位的子级添加Translation组件,并将其沿Z轴向上移动。
  • 为绝对定位的子项赋予Z轴上更高的变换。
  • 以不同顺序生成节点。

似乎覆盖子对象始终在相对定位的同级对象后面进行渲染。

解决方法

当前,Bevy UI中的

Z顺序由层次结构隐式定义。节点“堆叠”在其父级之上,并在其父级的子级列表中位于其之前的兄弟姐妹之上。

从功能上讲,z顺序是使用实体的Transform的z平移值定义的。对于普通精灵,您可以直接设置。对于UI组件,有一个基础系统可以为您进行设置。

最终,我希望可以有选择地覆盖Bevy UI的z顺序行为。那应该是添加一个新字段以“选择退出”,然后允许人们直接设置转换的z平移的问题。