버전:2021.3+
이 예제에서는 바인딩을 생성하고 바인딩 경로를 UXML로 설정한 후 C# 스크립트로 Bind()
메서드를 호출하는 방법을 설명합니다.
이 예제에서는 씬에서 임의의 게임 오브젝트의 이름 프로퍼티에 바인딩하는 TextField가 있는 커스텀 에디터 창을 생성합니다.
이 예제에서 생성한 완성된 파일은 GitHub 저장소에서 확인할 수 있습니다.
이 가이드는 Unity 에디터, UI 툴킷, C# 스크립팅에 익숙한 개발자용입니다.시작하기 전에 먼저 다음을 숙지하십시오.
UXML에서 시각적 요소와 바인딩 경로를 정의합니다.
템플릿을 사용하여 Unity에서 프로젝트를 생성합니다.
프로젝트(Project) 창에서 모든 파일을 저장할 bind-with-uxml-csharp
라는 이름의 폴더를 만듭니다.
binding_example.uxml
이라는 이름의 UI 문서를 생성하고 해당 콘텐츠를 다음과 같이 바꿉니다.
<UXML xmlns:ui="UnityEngine.UIElements">
<ui:VisualElement name="top-element">
<ui:Label name="top-label" text="UXML-Defined Simple Binding"/>
<ui:TextField name="GameObjectName" label="Name" text="" binding-path="m_Name"/>
</ui:VisualElement>
</UXML>
C# 스크립트에서 바인딩을 생성하고 Bind()
메서드를 명시적으로 호출합니다.
Editor
라는 이름의 폴더를 만듭니다.
Editor 폴더에 SimpleBindingExampleUXML.cs
라는 이름의 C# 스크립트 파일을 만듭니다.
SimpleBindingExampleUXML.cs
의 콘텐츠를 다음과 같이 바꿉니다.
using UnityEditor;
using UnityEngine;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
namespace UIToolkitExamples
{
public class SimpleBindingExampleUXML :EditorWindow
{
[SerializeField]
VisualTreeAsset visualTree;
[MenuItem("Window/UIToolkitExamples/Simple Binding Example UXML")]
public static void ShowDefaultWindow()
{
var wnd = GetWindow<SimpleBindingExampleUXML>();
wnd.titleContent = new GUIContent("Simple Binding UXML");
}
public void CreateGUI()
{
visualTree.CloneTree(rootVisualElement);
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);
}
else
{
// Unbind the object from the actual visual element
rootVisualElement.Unbind();
// Clear the TextField after the binding is removed
var textField = rootVisualElement.Q<TextField>("GameObjectName");
if (textField != null)
{
textField.value = string.Empty;
}
}
}
}
}
프로젝트(Project) 창에서 SimpleBindingExampleUXML.cs
를 선택하고 binding_example.uxml
을 인스펙터의 Visual Tree 필드에 드래그합니다.