Unity3D :坐标和定位系统

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

坐标和定位系统

UI 工具包使用功能强大的布局系统,该系统根据样式属性中的布局参数自动计算各个元素的位置和大小。这是基于Flexbox,一个Web布局模型。有关详细信息,请参阅布局引擎。

相对和绝对位置

UI 工具包有两种类型的坐标:

  • 相对:相对于元素计算位置的坐标。布局系统计算元素的位置,然后将坐标添加为偏移量。父元素可以影响子元素的大小和位置,因为布局引擎在计算元素位置时会考虑它们。子元素只能影响父元素的大小。
  • 绝对:相对于父元素的坐标。这绕过了自动布局计算,直接设置元素的位置。同一父级下的同级元素对元素的位置没有影响。同样,该元素不会影响同一父级下其他同级的位置和大小。

视觉元素
确定用于计算其位置的坐标系。您可以配置要在元素样式表中使用的坐标系。

以下代码演示如何通过代码设置可视元素的坐标空间和位置:

    var newElement = new VisualElement();
    newElement.style.position = Position.Relative;
    newElement.style.left = 15;
    newElement.style.top = 35;

元素的原点是其左上角。

布局系统计算每个元素的 VisualElement.layout 属性(类型),其中包括元素的最终位置。这考虑了元素的相对或绝对位置。Rect

以点表示,相对于其父级的坐标空间。layout.position

每个元素都有一个变换属性 (),可用于向元素的位置和旋转添加额外的局部偏移量。偏移量不表示在计算布局属性中。默认情况下,是标识。VisualElementITransformtransform

使用 worldBound 属性检索 的最终窗口空间坐标,同时考虑布局位置和转换。此位置包括窗口标题的高度。VisualElement

坐标系之间的变换

and 属性定义如何在局部坐标系和父坐标系之间进行转换。VisualElement.layout.positionVisualElement.transform

VisualElementExtensions 静态类提供了以下扩展方法,用于在坐标系之间转换点和矩形:

  • WorldToLocal将 OR 从空间转换为元素内的参照。Vector2RectPanel
  • LocalToWorld将 或 转换为空间参照。Vector2RectPanel
  • ChangeCoordinatesTo从一个元素的局部空间转换或到另一个元素的局部空间。Vector2Rect

其他资源

  • 相对定位和绝对定位 C# 示例

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

上一篇:Unity3D :Draw order (mvrlink.com)

下一篇:Unity3D :UXML简介 (mvrlink.com)

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