Unity 6.3
0 онлайн 85 гостей 3 в системе
Вход

Системы координат и позиционирования

UI Toolkit использует мощную систему макета, которая автоматически рассчитывает положение и размер отдельных элементов на основе параметров макета в их свойствах стиля. Это основано на Flexbox, модели веб-макетирования. Для более подробной информации см. Layout Engine.

Относительные и абсолютные позиции

В UI Toolkit координаты относятся к положению элемента в макете. Вы можете настроить каждый элемент в системе макета на использование относительных или абсолютных координат:

  • Относительная: Координаты относительно вычисленного положения элемента. Система макета вычисляет положение элемента, а затем добавляет координаты в качестве смещения. Родительные элементы могут влиять на размер и положение дочерних элементов, так как движок макета учитывает их при вычислении положения элемента. Дочерние элементы могут влиять только на размер родительского элемента.
  • Абсолютный: Координаты относительно родительского элемента. Это обходит автоматическое расчет макета и напрямую устанавливает положение элемента. Семейные элементы под одним родителем не влияют на положение элемента. Аналогичным образом, элемент не влияет на положение и размер других братьев под одним родителем.

Каждый визуальный элемент определяет систему координат, используемую для расчета его положения. Вы можете настроить, какая система координат будет использоваться в таблице стилей элемента.

Следующие фрагменты кода C# устанавливают координатное пространство и положение визуального элемента:

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

Происхождение элемента находится в его верхнем левом углу.

Система макета вычисляет свойство VisualElement.layout (тип Rect) для каждого элемента, которое включает в себя конечное положение элемента. Это учитывает относительное или абсолютное положение элемента.

layout.position выражается в точках относительно координатного пространства его родительского объекта.

Каждый VisualElement имеет свойство трансформации (ITransform), которое можно использовать для добавления дополнительного локального смещения к положению и вращению элемента. Смещение не представлено в вычисляемом свойстве макета. По умолчанию transform является идентичностью.

Используйте свойства worldBound для получения окончательных координат окна VisualElement, принимая во внимание как позицию макета, так и преобразование. Эта позиция включает высоту заголовка окна.

Преобразование между системами координат

Свойства VisualElement.layout.position и VisualElement.transform определяют способ преобразования между локальной и родительской системами координат.

VisualElementExtensions статический класс предоставляет следующие методы расширения, преобразующие точки и прямоугольники между системами координат:

  • WorldToLocal преобразует Vector2 или Rect из пространства Panel в референтное пространство внутри элемента.
  • LocalToWorld преобразует Vector2 или Rect в пространственный референт Panel.
  • ChangeCoordinatesTo преобразует Vector2 или Rect из локального пространства одного элемента в локальное пространство другого.

Дополнительный ресурс