Перейти к содержимому

Элементы

Только client Элементы создаются и загружаются через UI.

Создание или поиск элемента само по себе ничего нового не показывает. Элемент виден, только если он находится в дереве корня, добавленного на экран одним из методов UI, и его visible не отключён. RemoveFromHierarchy() скрывает его, сохраняя объект для повторного добавления; Delete() удаляет окончательно.

Базовый тип любого элемента интерфейса. В зависимости от фактического элемента UXML методы поиска автоматически возвращают более точный тип: TextElement, ImageElement, TextFieldElement, ScrollView или DotViewElement.

Свойство Доступ Описание
childCount get Количество непосредственных дочерних элементов
hasChildren get Есть ли дочерние элементы
height get Итоговая высота на экране
name get Имя элемента из UXML или SetName()
style get Объект ElementStyle
visible get/set Участвует ли элемент в отображении
width get Итоговая ширина на экране
windowScale get Масштаб HUD-окна, внутри которого находится элемент
parent:Add(child: VisualElement)
parent:Clear()
element:RemoveFromHierarchy()
element:Delete(): bool
element:SendToBack()
  • Add() добавляет элемент в контейнер;
  • Clear() отсоединяет всех непосредственных потомков;
  • RemoveFromHierarchy() отсоединяет сам элемент без окончательного удаления;
  • Delete() окончательно удаляет элемент и его обёртки;
  • SendToBack() перемещает элемент позади соседей.
element:GetChild(name: string): VisualElement
element:GetChildAt(index: number): VisualElement

GetChild() ищет именованного потомка рекурсивно и возвращает nil, если совпадения нет. GetChildAt() возвращает непосредственного потомка по индексу от 0.

element:AddToClassList(className: string)
element:EnableInClassList(className: string, enabled: boolean)
element:SetName(name: string)

Классы используются селекторами USS. EnableInClassList() удобно применять для состояний вроде active, warning или disabled.

По умолчанию абсолютный UI может игнорировать мышь. Включите взаимодействие перед регистрацией событий:

button:EnableMouseEvents()
button:OnClick(function(clickCount)
print("Clicks: " .. tostring(clickCount))
end)
button:OnMouseEnter(function()
button:EnableInClassList("hover", true)
end)
button:OnMouseLeave(function()
button:EnableInClassList("hover", false)
end)
Метод Аргумент callback Назначение
OnClick(callback) clickCount Завершённый клик
OnPointerDown(callback) clickCount Нажатие кнопки указателя
OnMouseEnter(callback) нет Указатель вошёл в элемент
OnMouseLeave(callback) нет Указатель покинул элемент

Повторная регистрация заменяет предыдущий callback того же события. Передайте nil, чтобы убрать обработчик.

element:GetPickingMode(): number
element:SetPickingMode(mode: number)
Режим Число Поведение
Position 0 Элемент участвует в обработке указателя
Ignore 1 Элемент пропускает указатель

EnableMouseEvents() является короткой формой включения режима Position.

element:SetBorderColor(color: Color)
element:SetCursor(cursorName: string): bool

SetCursor() возвращает false для неизвестного имени. Поддерживаются:

arrow, hand, text, move, resize-horizontal, resize-vertical, pipette.

Возвращается для Label и других текстовых элементов.

label.text = "Ready"
print(label.text)
Свойство Тип Доступ
text string get/set

Возвращается для UXML-элемента Image.

local icon = root:GetChild("imgIcon")
icon.texture = Textures:GetTexture("Icon.png")
Свойство Тип Доступ
texture Texture get/set
local input = root:GetChild("txtSearch")
input.value = "query"
input:Focus()
Свойство Тип Доступ
IsFocused boolean get
value string get/set

Focus() передаёт полю клавиатурный фокус.

Специализированный индикатор из нескольких точек.

Свойство Тип Доступ
count number get/set
fillToValue boolean get/set
value number get/set
dots.count = 5
dots.value = 3
dots.fillToValue = true
dots:Reset()

Reset() сбрасывает текущее состояние представления.

scroll:CanScrollByDelta(deltaY: number): bool
scroll:ScrollByDelta(deltaY: number): bool
scroll:ScrollToTop()
scroll:ScrollToBottom()
scroll:EnableAutoScroll()
scroll:DisableAutoScroll()
scroll:RefreshVerticalScrollerVisibility()
  • CanScrollByDelta() проверяет, возможно ли прокрутить содержимое в указанном направлении;
  • ScrollByDelta() выполняет шаг прокрутки и возвращает, изменилась ли позиция;
  • авто-прокрутка удерживает представление у конца при добавлении содержимого;
  • RefreshVerticalScrollerVisibility() пересчитывает видимость вертикальной полосы.