Unity 6.3
0 онлайн 101 гостей 3 в системе
Вход
UI системы Шаг 54 из 317

Развернутый

Foldout — это сжимающаяся часть UI. Foldout скрывает или показывает элементы, которые он содержит, когда вы нажимаете на его заголовок.

Развернутый
Развернутый

Создать раскладку

Развертывание состоит из следующих элементов:

  • Этикетка: Метка, которую вы можете использовать в качестве имени Foldout.
  • Переключить: Нажмите на переключатель, чтобы раскрыть или сжать подэлемент контейнера. Он выглядит как стрелка, а не как флажок по умолчанию. Когда контейнер свернут, стрелка указывает вправо. Когда контейнер развернут, стрелка указывает вниз.
  • Контейнер: Контейнер содержит визуальные элементы, которые нужно отображать или скрывать при переключении развертки.

Вы можете добавлять элементы в контейнер Foldout, и функция отображения или скрытия будет работать автоматически.

Следующий документ UI создает Foldout с двумя кнопками в его контейнере. Две кнопки показываются или скрываются при переключении Foldout.

<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
    <ui:Foldout text="Foldout" name="MyFoldout" value="true">
        <ui:Button text="First item" />
        <ui:Button text="Second item" />
    </ui:Foldout>
</ui:UXML>

Реагирование на действия пользователя

Foldout и его субэлемент Toggle отвечают на события Изменение. Toggle скрывает или показывает контейнер Foldout.

Вы можете привязать Foldout к Булевой переменной или получить доступ к ее значению через INotifyValueChanged<bool> interface.

Применение стилей к непосредственному дочернему элементу Foldout

Когда вы добавляете элементы в Foldout, они добавляются под дочерним элементом Foldout, который выступает в качестве контейнера. Чтобы добавить стиль в этот контейнер, сделайте следующее в USS:

/* Style only direct children of Foldout */
Foldout > .unity-foldout__content {
    margin-left: 20px;
}

Примеры

Следующий фрагмент кода C# создает Foldout и проверяет, развернут ли Foldout:

// Create a new foldout, add two elements to it and add it to the container
var cSharpFoldout = new Foldout {text = "Elements"};
cSharpFoldout.Add(new Label("Indented Label"));
cSharpFoldout.Add(new Slider("Indented Slider", 0, 100));
container.Add(cSharpFoldout);

cSharpFoldout.RegisterValueChangedCallback(e =>
{
    // Check whether the foldout is expanded
    if (cSharpFoldout.value)
    {
        Debug.Log("Foldout is expanded");
    }
    else
    {
        Debug.Log("Foldout is collapsed");
    }
});

Базовый класс C# и пространство имён

C# класс: Foldout
Пространство имен: UnityEngine.UIElements
Базовый класс: BindableElement

Атрибуты члена UXML

Этот элемент имеет следующие атрибуты члена:

Имя Тип Описание
focusable boolean фокусируемый
text string Текст метки для переключателя.
toggle-on-label-click boolean Включать или выключать состояние выпадающего списка при щелчке пользователя по метке.
value boolean Это состояние переключателя Foldout. Оно равно true, если Foldout открыт и его содержимое видно, и false, если Foldout закрыт и его содержимое скрыто.

Унаследованные атрибуты UXML

Этот элемент наследует от своего базового класса следующие атрибуты:

Имя Тип Описание
binding-path string Путь к целевому свойству для привязки.
focusable boolean Если false, то элемент не может быть фокусирован.

Элемент может быть фокусирован только в том случае, если его свойство canGrabFocus имеет значение true.
tabindex int Целое число, используемое для сортировки фокусируемых элементов в кольце фокуса. Должно быть больше или равно нулю.

Установка значения tabIndex меньше 0 (например, −1) удаляет элемент из кольца фокуса и навигации по вкладкам.

Этот элемент также наследует следующие атрибуты от VisualElement:

Имя Тип Описание
content-container string Логический контейнер, в который добавляются дочерние элементы. Если к этому элементу добавляется дочерний элемент, то он добавляется в контейнер содержимого этого элемента.

При итерации над VisualElement.Children При использовании элемента вместо самого элемента используется иерархия контейнера содержимого элемента. Это может привести к неожиданным результатам, например, к игнорированию элементов событиями навигации, если они не находятся непосредственно в иерархической структуре контейнера. См. IFocusRing для больше информации.

Если контейнер содержимого совпадает с самим элементом, то дочерние элементы добавляются непосредственно к элементу. Это верно для большинства элементов, но может быть переопределено более сложными типами.

ScrollView, например, имеет контейнер содержимого, отличающийся от самого себя. В этом случае дочерние элементы, добавленные к представлению прокрутки, добавляются вместо этого к его элементу контейнера содержа-VisualElement.Hierarchy.parent) дочерних элементов является элементом контейнера содержимого прокрутки, их логическим родителем (VisualElement.parentПоскольку некоторые фокусируемые дочерние объекты представления прокрутки не являются частью его логической иерархии, такие как его Scroller элементов, эти фокусируемые дочерние элементы не рассматриваются по умолчанию при использовании последовательной навигации. Как я могу изменить, какой элемент будет фокусироваться дальше для примера решения, если правила навигации по умолчанию не соответствуют вашим потребностям.
data-source Object Назначает источник данных этому VisualElement, который переопределяет любой унаследованный источник данных. Этот источник данных наследуется всеми дочерними объектами.
data-source-path string Путь от источника данных к значению.
data-source-type System.Type Возможный тип источника данных, присваиваемый этому VisualElement.

Эта информация используется UI Builder только как подсказка для определенного заполнения поля пути источника данных, когда эффективный источник данных не может быть указан во время проектирования.
enabled boolean Возвращает true, если VisualElement разрешен локально.

Этот флаг не изменяется, если VisualElement имплицитно отключен одним из родителей. Чтобы проверить это, используйте enabledInHierarchy.
language-direction UIElements.LanguageDirection Указывает направленность текста элемента. Значение будет распространяться на дочерей элемента.

Установка languageDirection на RTL может получить только базовую поддержку RTL, такую как инверсия текста. Чтобы получить более полную поддержку RTL, такую как перерыв строки, перенос слов или формирование текста, вы должны включить Усовершенствованный текстовый генератор.
name string Имя этого VisualElement.

Используйте это свойство для написания селекторов USS, которые нацелены на определенный элемент. Стандартная практика заключается в том, чтобы дать элементу уникальное имя.
picking-mode UIElements.PickingMode Определяет, может ли этот элемент быть целью событий указателя или выбран IPanel.Pick запросов.

Элементы не могут быть выбраны, если:

- Они невидимы. style.display установлен на DisplayStyle.None

Элементы с режимом подбора PickingMode.Ignore никогда не получать псевдо-state.
style string Задает значения стиля на VisualElement.

Возвращаемые данные стиля, рассчитанные из USS файлы или встроенные стили, записанные в этот объект в C#, не представляет полностью разрешенные стили, такие как окончательная высота и ширина VisualElement. Чтобы получить доступ к этим полностью разрешенным стилям, используйте resolvedStyle.



Дополнительные сведения об использовании этого свойства и всех поддерживаемых USS свойства, см. Применить стили в C# сценарии и USS ссылка на свойства страницы руководства.
tooltip string Текст, который будет отображаться внутри информационного поля после того, как пользователь задержится над элементом небольшое время. Это поддерживается только в Редакторе UI.
usage-hints UIElements.UsageHints Комбинация значений подсказки, которые указывают высокоуровневые предполагаемые схемы использования для VisualElement. Это свойство может быть установлено только тогда, когда VisualElement еще не является частью Panel. Как только оно становится частью Panel, это свойство становится эффективно только для чтения, и попытки изменить его будут вызывать исключение. Указание правильного UsageHints заставляет систему принимать более правильные решения о том, как обрабатывать или ускорять определенные операции на основе предполагаемой схемы использования. Обратите внимание, что эти подсказки не влияют на поведение или визуальные результаты, а только влияют на общую производительность панели и элементов внутри нее. Рекомендуется всегда рассматривать возможность указания правильного UsageHints, но помните, что некоторые UsageHints могут быть внутренне проигнорированы при определенных условиях (e.g. из-за аппаратных ограничений на целевой платформе).
view-data-key string Используется для устойчивости данных представления, таких как развернутые состояния дерева, положение прокрутки или уровень масштаба.

Этот ключ используется для сохранения и загрузки данных представления из хранилища данных представления. Если этот ключ не установлен, устойчивость отключена для связанного VisualElement. Дополнительные сведения см. в разделе Устойчивость данных представления в руководстве Unity.

Классы USS

В таблице ниже перечислены все открытые имена свойств C# и связанные с ними селекторы USS.

C# собственность USS выбор Описание
ussClassName .unity-foldout Имя USS-класса для элементов Foldout.

Unity добавляет этот USS-класс к каждому экземпляру Foldout. Любые стили, применённые к этому классу, влияют на все Foldout, расположенные рядом с таблицей стилей или ниже неё в визуальном дереве.
toggleUssClassName .unity-foldout__toggle Имя USS-класса для подэлементов Toggle в элементах Foldout.

Unity добавляет этот USS-класс к Toggle подэлемент каждого Foldout. Любые стили, применённые к этому классу, влияют на все подэлементы Toggle, расположенные рядом с таблицей стилей или ниже неё в визуальном дереве.
contentUssClassName .unity-foldout__content Имя USS-класса для элемента содержимого внутри Foldout.

Unity добавляет этот USS-класс к VisualElement который содержит показываемые или скрываемые элементы. Любые стили, применённые к этому классу, влияют на все контейнеры сворачиваемых элементов, расположенные рядом с таблицей стилей или ниже неё в визуальном дереве.
inputUssClassName .unity-foldout__input Имя USS-класса для элемента Label внутри Foldout.

Unity добавляет этот USS-класс к VisualElement который содержит Toggle элементы ввода. Любые стили, применённые к этому классу, влияют на все контейнеры сворачиваемых элементов, расположенные рядом с таблицей стилей или ниже неё в визуальном дереве.
checkmarkUssClassName .unity-foldout__checkmark Имя USS-класса для элемента Label внутри Foldout.

Unity добавляет этот USS-класс к VisualElement представляющей собой отметку в виде галочки Toggle подэлемент каждого Foldout. Любые стили, применённые к этому классу, влияют на все контейнеры сворачиваемых элементов, расположенные рядом с таблицей стилей или ниже неё в визуальном дереве.
textUssClassName .unity-foldout__text Имя USS-класса для элемента Label внутри Foldout.

Unity добавляет этот USS-класс к Label в 2000 году Toggle подэлемент каждого Foldout. Любые стили, применённые к этому классу, влияют на все контейнеры сворачиваемых элементов, расположенные рядом с таблицей стилей или ниже неё в визуальном дереве.
disabledUssClassName .unity-disabled Имя USS-класса для локально отключённых элементов.

Вы также можете использовать раздел Соответствующие селекторы в отладчике Inspector или UI Toolkit, чтобы увидеть, какие селекторы USS влияют на компоненты VisualElement на каждом уровне его иерархии.

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