Unity 매뉴얼: 데이터 바인딩
이 문서에서는 Unity에서 데이터 바인딩을 구현하는 방법에 대해 설명합니다. 데이터 바인딩을 활용하면, UI 요소와 비 UI 오브젝트 간의 값 동기화를 쉽게 할 수 있습니다.
데이터 바인딩이란?
데이터 바인딩은 MonoBehaviour의 string 프로퍼티와 같은 비 UI 오브젝트의 프로퍼티를 UI 오브젝트의 프로퍼티와 동기화하는 것을 뜻합니다. 이를 통해 UI에서 값이 변경될 때 이벤트 핸들러를 작성하지 않아도 됩니다.
참고: SerializedObject 데이터 바인딩은 에디터에서만 작동하며 런타임에서는 작동하지 않습니다.
데이터 바인딩의 요구사항
- 직렬화된 프로퍼티에만 바인딩 가능
- 사용자 정의
ScriptableObject
, 사용자 정의MonoBehaviour
클래스 - 네이티브 Unity 컴포넌트 타입
- 기본 C# 타입(ex. int, bool, float 등)
- 바인딩할 수 있는 시각적 요소
INotifyValueChanged
인터페이스를 구현하는 요소의value
프로퍼티만 바인딩 가능
데이터 바인딩 생성
데이터 바인딩을 생성하는 방법은 다음과 같습니다:
- 바인딩 경로 설정: 바인딩하려는 오브젝트의 프로퍼티 이름으로 설정해야 합니다.
- Bind() 호출: 해당 시각적 요소와 SerializedObject를 바인딩합니다.
예시:
using UnityEngine;
public class MyComp : MonoBehaviour
{
[SerializeField]
int m_Count;
}
위 스크립트에서 m_Count
에 바인딩하려면 바인딩 경로를 m_Count
로 설정해야 합니다.
바인딩 예제
아래 표는 다양한 바인딩 예제를 제공합니다.
예제 설명 | 코드 스니펫 |
---|---|
C# 스크립트에서 바인딩 경로로 바인딩 | C# 코드 샘플 |
바인딩 경로 없이 바인딩 | C# 코드 샘플 |
UXML 및 C#으로 바인딩 | UXML 및 C# 코드 샘플 |
인스펙터로 바인딩 만들기 | C# 코드 샘플 |
중첩된 프로퍼티에 바인딩 | C# 코드 샘플 |
UXML 템플릿에 바인딩 | UXML 코드 샘플 |
바인딩된 프로퍼티가 변경될 때 콜백 수신 | C# 코드 샘플 |
ListView로 리스트에 바인딩 | C# 코드 샘플 |
커스텀 컨트롤 바인딩 | 커스텀 데이터 타입 샘플 |
커스텀 요소 바인딩
커스텀 요소를 만들고 값 바인딩 시스템을 통해 직렬화된 프로퍼티에 바인딩하려면 다음 단계를 따르십시오.
- 커스텀 요소 선언 (BindableElement에서 상속)
INotifyValueChanged
인터페이스 구현SetValueWithoutNotify()
메서드 구현
베스트 프랙티스
- 모든 UI 타입에 따라 바인딩 지점을 다르게 설정할 수 있습니다.
- CreateInspectorGUI() 또는 CreatePropertyGUI()를 오버라이드할 때는 시각적 트리에 직접 바인딩하는 것이 좋습니다.
- 성능을 고려하여 시각적 요소를 두 번 이상 바인딩하지 않도록 하세요.
추가 리소스
- Unity의 커스텀 인스펙터 생성
- 바인드 가능 요소 레퍼런스
- Unity 포럼 및 기술 자료
이 문서를 통해 Unity에서 데이터 바인딩 기능을 이해하고 구현하는 데 도움이 되길 바랍니다.