Привязка без пути привязки
Версия: 2021.3+
Вы можете вызвать BindProperty() для привязки элемента к объекту SerializedProperty непосредственно, вместо пути привязки. В этом примере показано, как связать с BindProperty().
Примерный обзор
В этом примере создается пользовательское окно Редактора для изменения имени GameObject.
Вы можете найти завершенные файлы, созданные этим примером, в хранилище GitHub.
Предварительные условия
Это руководство предназначено для разработчиков, знакомых со скриптами Unity Editor, UI Toolkit и C#. Перед началом работы ознакомьтесь со следующим:
Связь с BindProperty()
Создайте настраиваемое окно Редактора в C# с TextField. Найдите свойство name GameObject и привязайте его к этому свойству непосредственно методом BindProperty().
В окне Project создайте папку
bind-without-binding-pathдля хранения вашего файла.В течение пути-привязки-без-привязки папка, создать папку с названием
Editor.-
В течение Редактор папка, создать C# скрипт назван
SimpleBindingPropertyExample.csи заменить его содержание следующим:using UnityEditor; using UnityEngine; using UnityEditor.UIElements; using UnityEngine.UIElements; namespace UIToolkitExamples { public class SimpleBindingPropertyExample : EditorWindow { TextField m_ObjectNameBinding; [MenuItem("Window/UIToolkitExamples/Simple Binding Property Example")] public static void ShowDefaultWindow() { var wnd = GetWindow<SimpleBindingPropertyExample>(); wnd.titleContent = new GUIContent("Simple Binding Property"); } public void CreateGUI() { m_ObjectNameBinding = new TextField("Object Name Binding"); 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); // Note: the "name" property of a GameObject is actually named "m_Name" in serialization. SerializedProperty property = so.FindProperty("m_Name"); // Bind the property to the field directly m_ObjectNameBinding.BindProperty(property); } else { // Unbind any binding from the field m_ObjectNameBinding.Unbind(); } } } }
Проверка привязки
- В Unity выберите Окно > UIToolkitExamples > Simple Binding Property Example. Появится окно пользовательского редактора с текстовым полем.
- Выберите GameObject в вашей сцене. Имя GameObject появится в текстовом поле окна редактора. Если вы измените имя GameObject в текстовом поле, то изменится и имя GameObject.