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建模学习工作室整理翻译,转载请注明出处!