Unity3D :布局引擎

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

布局引擎

UI 工具包包括一个布局引擎,可根据布局和样式属性定位视觉元素。布局引擎使用 Yoga 的布局原则,实现了名为 Flexbox 的 HTML/CSS 布局系统的子集。

Resources

要开始使用 Yoga 和 Flexbox,请使用以下外部资源:

  • Yoga 官方文档:UI 工具包属性匹配 Yoga 布局行为。
  • CSS-Tricks 的 Flexbox 指南:UI 工具包支持 Flexbox 中的大多数属性。

行为

默认情况下,所有视觉元素都是布局的一部分。布局具有以下默认行为:

  • 容器垂直分配其子项。
  • 容器矩形的位置包括其子矩形。其他布局属性可能限制此行为。
  • 带文本的视觉元素在其大小计算中使用文本大小。其他布局属性可能限制此行为。

UI 工具包提供了标准 UI 控件的内置控件,如按钮、开关、文本字段或标签。这些内置控件具有影响其布局的样式。

最佳实践

下面列出了有关如何改进布局引擎性能的技巧:

  • 设置 widthheight 来定义元素的大小。
  • 使用 flexGrow 属性 (USS: flex-grow: <value>;) 为元素分配灵活的大小。当元素的大小由其同级决定时,flexGrow 属性的值为元素的大小指定一个基本权重。
  • flexDirection 属性设置为 row (USS: flex-direction: row;) 以切换到水平布局。
  • 使用相对定位根据元素的原始布局位置来偏移元素。
  • position 属性设置为 absolute 以便相对于父位置矩形来放置某个元素。这不会影响其同级和父项的布局。

示例

下面的示例创建一个定位到屏幕左下角的 UI 元素。这是通过创建一个填充整个屏幕的父元素,然后将子元素定位在其左下角来实现的。

  1. 创建一个新的 VisualElement
  2. flexGrow 属性设置为 1。
  3. 创建一个新的 VisualElement 并使其成为第一个的子元素
  4. 将元素上的 position 属性设置为 absolute
  5. leftbottom 的位置偏移设置为 0。
锚定示例
锚定示例

这是所得到的 XML 代码:

<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" editor-extension-mode="False">
    <ui:VisualElement style="flex-grow: 1;">
        <ui:VisualElement style="position: absolute; left: 0; bottom: 0;" />
    </ui:VisualElement>
</ui:UXML>

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :视觉树 (mvrlink.com)

下一篇:Unity3D :用户界面生成器 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号