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

Начало работы с runtime UI

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

  1. Создать UI Документ (.uxml) с элементами управления.
  2. Добавить UIDocument GameObject в сцену и добавить файл UXML в качестве исходного ассета для него.
  3. Создайте MonoBehaviours для определения поведения ваших UI контроллеров.
  4. (необязательно) Настройте систему событий времени выполнения.

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

Предварительные условия

Это руководство предназначено для разработчиков, знакомых со скриптами Unity Editor, UI Toolkit и C#. Перед началом работы ознакомьтесь со следующим:

Вы можете найти завершенные файлы, созданные этим примером, в хранилище GitHub.

Создать документ UI с элементами управления

Создайте документ UI с меткой, кнопкой и переключателем. Информацию о том, как добавить элементы управления UI с UI Builder или UXML, см. в Начало работы с UI Toolkit.

  1. Создайте проект в Unity Editor с любым шаблоном.

  2. Создайте документ UI с именем SimpleRuntimeUI.uxml со следующим содержанием:

    <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:VisualElement style="flex-grow: 1;">
            <ui:Label text="This is a Label" display-tooltip-when-elided="true"/>
            <ui:Button text="This is a Button" display-tooltip-when-elided="true" name="button"/>
            <ui:Toggle label="Display the counter?" name="toggle"/>
            <ui:TextField picking-mode="Ignore" label="Text Field" text="filler text" name="input-message" />
        </ui:VisualElement>
    </ui:UXML>
    

Настройка сцены

Создайте UIDocument GameObject в SampleScene и добавьте UI Документ в качестве исходного ассета.

  1. В SampleScene, выберите GameObject > UI Toolkit > UI Документ. Это создает следующее:

    • Папка UI Toolkit с ассетом Panel Settings и темой по умолчанию для времени выполнения.
    • GameObject с прикрепленным компонентом Документ UI и компонент Документ UI подключены к ассету Настройки панели.
  2. Выберите UIDocument GameObject в иерархии и перетащите SimpleRuntimeUI.uxml из окна Project в поле Source Asset компонента UI Document в окне Inspector. Это ссылается на исходный ассет в созданном вами файле UXML.

Определение поведения ваших UI контроллеров

Чтобы добавить логику, создайте скрипт C#, который производится из скрипта MonoBehaviour для доступа к элементам управления, на которые ссылается компонент документа UI.

Unity грузов a/ UI Источник компонента документа UXML когда OnEnable Чтобы убедиться, что визуальное дерево загружается правильно, добавьте логику для взаимодействия с элементами управления внутри компонента. OnEnable метод.

  1. Создайте скрипт C# с именем SimpleRuntimeUI.cs со следующим содержанием:

    using UnityEngine;
    using UnityEngine.UIElements;
    
    public class SimpleRuntimeUI : MonoBehaviour
    {
        private Button _button;
        private Toggle _toggle;
    
        private int _clickCount;
    
        //Add logic that interacts with the UI controls in the `OnEnable` methods
        private void OnEnable()
        {
            // The UXML is already instantiated by the UIDocument component
            var uiDocument = GetComponent<UIDocument>();
    
            _button = uiDocument.rootVisualElement.Q("button") as Button;
            _toggle = uiDocument.rootVisualElement.Q("toggle") as Toggle;
    
            _button.RegisterCallback<ClickEvent>(PrintClickMessage);
    
            var _inputFields = uiDocument.rootVisualElement.Q("input-message");
            _inputFields.RegisterCallback<ChangeEvent<string>>(InputMessage);
        }
    
        private void OnDisable()
        {
            _button.UnregisterCallback<ClickEvent>(PrintClickMessage);
        }
    
        private void PrintClickMessage(ClickEvent evt)
        {
            ++_clickCount;
    
            Debug.Log($"{"button"} was clicked!" +
                    (_toggle.value ? " Count: " + _clickCount : ""));
        }
    
        public static void InputMessage(ChangeEvent<string> evt)
        {
            Debug.Log($"{evt.newValue} -> {evt.target}");
        }
    }
    
  2. Добавить SimpleRuntimeUI.cs в качестве компонента UIDocument GameObject.

Настройка системы событий времени выполнения

В зависимости от того, выбран ли в настройках проекта активный режим обработки ввода, и хотите ли вы смешивать панели UI Toolkit с холстами uGUI, существует ряд доступных опций для изменения того, как UI Toolkit обрабатывает ввод для генерирования событий времени выполнения.

Дополнительные сведения см. в Система событий времени выполнения.

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