Unity 사용자 매뉴얼: UI 툴킷의 데이터 바인딩
이 문서는 Unity의 UI 툴킷을 사용하여 에디터 UI에서 데이터를 바인딩하는 방법을 다룹니다. 특히 직렬화된 프로퍼티가 변경될 때 콜백을 수신하는 방법에 중점을 두겠습니다.
개요
본 예제에서는 씬의 게임 오브젝트 이름에 바인딩하는 TextField
가 포함된 커스텀 에디터 창을 생성합니다. 게임 오브젝트의 이름이 "GameObject"인 경우 텍스트 필드 레이블의 배경색이 진한 빨간색으로 변경됩니다.
선행 조건
이 가이드는 Unity 에디터, UI 툴킷 및 C# 스크립팅에 익숙한 개발자를 위해 작성되었습니다. 시작하기 전에 다음 내용을 숙지하십시오:
TrackPropertyValue()
Unbind()
바인딩 만들기
다음 단계를 따라 C# 스크립트를 생성합니다. 해당 스크립트는 직렬화된 프로퍼티의 값이 변경될 때마다 CheckName()
메서드를 호출합니다.
- Unity에서 새로운 프로젝트 생성
callback-SerializedProperty-change
라는 폴더를 생성- 그 안에
Editor
라는 폴더를 생성 SimpleBindingPropertyTrackingExample.cs
라는 이름의 C# 스크립트를 생성하고 아래 코드를 추가합니다.
using UnityEditor;
using UnityEngine;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
namespace UIToolkitExamples
{
public class SimpleBindingPropertyTrackingExample : EditorWindow
{
TextField m_ObjectNameBinding;
[MenuItem("Window/UIToolkitExamples/Simple Binding Property Tracking Example")]
public static void ShowDefaultWindow()
{
var wnd = GetWindow<SimpleBindingPropertyTrackingExample>();
wnd.titleContent = new GUIContent("Simple Binding Property Tracking");
}
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)
{
SerializedObject so = new SerializedObject(selectedObject);
SerializedProperty property = so.FindProperty("m_Name");
m_ObjectNameBinding.Unbind();
m_ObjectNameBinding.TrackPropertyValue(property, CheckName);
m_ObjectNameBinding.BindProperty(property);
CheckName(property);
}
else
{
m_ObjectNameBinding.Unbind();
}
}
void CheckName(SerializedProperty property)
{
if (property.stringValue == "GameObject")
{
m_ObjectNameBinding.style.backgroundColor = Color.red * 0.5f;
}
else
{
m_ObjectNameBinding.style.backgroundColor = StyleKeyword.Null;
}
}
}
}
바인딩 테스트
- Unity 메뉴에서
Window > UIToolkitExamples > Simple Binding Property Tracking Example
을 선택합니다. - 텍스트 필드가 포함된 커스텀 에디터 창이 나타납니다.
- 씬에서 아무 게임 오브젝트를 선택합니다.
- 선택한 게임 오브젝트의 이름이 에디터 창의 텍스트 필드에 표시됩니다.
- 텍스트 필드에서 게임 오브젝트의 이름을 변경합니다.
- 이름이 "GameObject"가 되면 레이블의 배경색이 진한 빨간색으로 변경됩니다.
추가 리소스
위 문서에서는 Unity의 UI 툴킷을 사용하여 데이터 바인딩을 설정하고 활용하는 방법을 설명하였습니다. 이 기능을 통해 게임 오브젝트의 변경 사항을 실시간으로 에디터 UI에 반영할 수 있습니다.