Unity 사용자 매뉴얼 - UI 툴킷으로 커스텀 인스펙터 만들기
이 가이드는 Unity 에디터에서 UI 툴킷을 사용하여 커스텀 인스펙터를 만드는 방법에 대해 설명합니다. 이 예제에서는 SerializedObject
데이터를 바인딩하여 중첩된 프로퍼티를 처리합니다.
개요
이 예제에서는 다음을 수행하는 커스텀 인스펙터 UI를 생성합니다: - 게임 오브젝트의 이름과 스케일에 바인딩하는 필드 - SerializedObject
의 중첩된 프로퍼티에 바인딩하는 두 개의 필드
선행 조건
이 가이드는 Unity 에디터, UI 툴킷, C# 스크립팅에 익숙한 개발자를 대상으로 합니다.
단계별 가이드
1단계: 물체 생성
DestructibleTankScript.cs
라는 이름의 C# 스크립트를 생성하고 다음 내용을 추가하세요.
using System;
using UnityEngine;
using UnityEngine.Serialization;
[Serializable]
public struct Health
{
public int armor;
public int life;
}
[ExecuteInEditMode]
public class DestructibleTankScript : MonoBehaviour
{
public string tankName = "Tank";
public float tankSize = 1;
public Health health;
private void Update()
{
gameObject.name = tankName;
gameObject.transform.localScale = new Vector3(tankSize, tankSize, tankSize);
}
public void Reset()
{
health.armor = 100;
health.life = 10;
}
}
2단계: UXML 및 인스펙터 UI 만들기
BindableElement
를 사용하여 UXML 파일을 만듭니다.- 바인딩 경로를
health
프로퍼티로 설정합니다.
UXML 파일의 예:
<UXML xmlns="UnityEngine.UIElements" xmlns:ue="UnityEditor.UIElements">
<Style src="tank_inspector_styles.uss"/>
<VisualElement name="row" class="container">
<Label text="Tank Script - Custom Inspector" />
<ue:PropertyField binding-path="tankName" name="tank-name-field" />
<ue:PropertyField binding-path="tankSize" name="tank-size-field" />
<BindableElement binding-path="health">
<ue:PropertyField binding-path="armor"/>
<ue:PropertyField binding-path="life"/>
</BindableElement>
</VisualElement>
</UXML>
3단계: 커스텀 에디터 만들기
DestructibleTankEditor.cs
라는 이름의 C# 스크립트를 생성하고 다음 내용을 추가합니다:
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
[CustomEditor(typeof(DestructibleTankScript))]
public class DestructibleTankEditor : Editor
{
[SerializeField]
VisualTreeAsset visualTreeAsset;
public override VisualElement CreateInspectorGUI()
{
return visualTreeAsset.CloneTree();
}
}
4단계: 바인딩 테스트
- Unity에서 빈 게임 오브젝트를 씬에 추가합니다.
- 해당 게임 오브젝트를 선택하고
Destructible Tank Script
컴포넌트를 추가합니다. - 인스펙터에서
Armor
및Life
필드를 조절하여health.armor
및health.life
프로퍼티에 바인딩된 것을 확인합니다.
추가 리소스
제목 | 링크 |
---|---|
SerializedObject 데이터 바인딩 | Unity Docs |
바인딩 가능한 요소 | Unity Docs |
바인딩 데이터 타입 전환 | Unity Docs |
구현 세부 정보 | Unity Docs |
바인딩 예제 | Unity Docs |
인스펙터로 바인딩 만들기 | Unity Docs |
결론
UI 툴킷을 사용하여 Unity에서 커스텀 인스펙터를 만드는 것은 매우 유용한 기술입니다. 이를 통해 더욱 직관적이고 사용자 친화적인 에디터 경험을 제공할 수 있습니다.