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

Привязка с путем привязки в скрипте C#

Версия: 2021.3+

В этом примере показано, как привязать путем привязки в скрипте C#.

Примерный обзор

В этом примере создается пользовательское окно Редактора для изменения имени GameObject.

Отображает окно Unity Editor с пользовательским полем для изменения имени GameObject.
Отображает окно Unity Editor с пользовательским полем для изменения имени GameObject.

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

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

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

Привязка с путем привязки

Создайте пользовательское окно Редактора в C# с TextField. Установите путь привязки к свойству name GameObject и сделайте явный вызов метода Bind().

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

  2. В окне Project создайте папку bind-with-binding-path для хранения вашего файла.

  3. В течение пути-привязки-с-привязкой папка, создать папку с названием Editor.

  4. В течение Редактор папка, создать C# скрипт назван SimpleBindingExample.cs и заменить его содержание следующим:

    using UnityEditor;
    using UnityEngine;
    using UnityEditor.UIElements;
    using UnityEngine.UIElements;
    
    namespace UIToolkitExamples
    {
        public class SimpleBindingExample : EditorWindow
        {
            TextField m_ObjectNameBinding;
    
            [MenuItem("Window/UIToolkitExamples/Simple Binding Example")]
            public static void ShowDefaultWindow()
            {
                var wnd = GetWindow<SimpleBindingExample>();
                wnd.titleContent = new GUIContent("Simple Binding");
            }
    
            public void CreateGUI()
            {
                m_ObjectNameBinding = new TextField("Object Name Binding");
                // Note: the "name" property of a GameObject is "m_Name" in serialization.
                m_ObjectNameBinding.bindingPath = "m_Name";
                rootVisualElement.Add(m_ObjectNameBinding);
                OnSelectionChange();
            }
    
            public void OnSelectionChange()
            {
                GameObject selectedObject = Selection.activeObject as GameObject;
                if (selectedObject != null)
                {
                    // Create the SerializedObject from the current selection
                    SerializedObject so = new SerializedObject(selectedObject);
                    // Bind it to the root of the hierarchy. It will find the right object to bind to.
                    rootVisualElement.Bind(so);
    
                    // Alternatively you can instead bind it to the TextField itself.
                    // m_ObjectNameBinding.Bind(so);
                }
                else
                {
                    // Unbind the object from the actual visual element that was bound.
                    rootVisualElement.Unbind();
                    // If you bound the TextField itself, you'd do this instead:
                    // m_ObjectNameBinding.Unbind();
    
                    // Clear the TextField after the binding is removed
                    m_ObjectNameBinding.value = "";
                }
            }
        }
    }
    

Проверка привязки

  1. В Unity выберите Окно > UIToolkitExamples > Simple Binding Example. Появится окно пользовательского редактора с текстовым полем.
  2. Выберите любой GameObject в вашей сцене. Имя GameObject появится в текстовом поле окна редактора. Если вы измените имя GameObject в текстовом поле, имя GameObject изменится.

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