728x90
개요
Unity의 기본 인스펙터는 자동으로 MonoBehaviour 스크립트의 변수를 표시하지만, 복잡한 기능을 추가하기에는 한계가 있습니다.
이를 해결하기 위해 CustomEditor를 사용하면 사용자 정의 UI 및 기능을 인스펙터에 추가할 수 있습니다.
CustomEditor를 활용한 기본적인 확장
using UnityEditor;
using UnityEngine;
// MyComponent의 인스펙터를 확장하는 Custom Editor
[CustomEditor(typeof(MyComponent))]
public class MyComponentEditor : Editor
{
public override void OnInspectorGUI()
{
// 기존 인스펙터 UI 유지
DrawDefaultInspector();
// 대상 스크립트 가져오기
MyComponent myComponent = (MyComponent)target;
// 커스텀 UI 요소 추가
EditorGUILayout.LabelField("Custom Inspector", EditorStyles.boldLabel);
EditorGUILayout.HelpBox("이 버튼을 누르면 speed 값을 변경할 수 있습니다.", MessageType.Info);
// 버튼 추가
if (GUILayout.Button("Set Speed to 10"))
{
myComponent.speed = 10f;
}
}
}
// 기본 MonoBehaviour 스크립트
public class MyComponent : MonoBehaviour
{
public float speed = 5f;
}
결과 사진
CustomEditor 개념 정리
CustomEditor(typeof(MyComponent))
- 특정 컴포넌트(MyComponent)의 기본 인스펙터를 커스텀하도록 설정합니다.
- 해당 컴포넌트를 선택하면, MyComponentEditor에서 정의한 UI가 표시됩니다.
DrawDefaultInspector()
- Unity의 기본 인스펙터 UI를 그대로 유지하면서, 추가적인 UI 요소만 삽입할 수 있습니다.
- 기본 인스펙터를 완전히 대체하려면 이 줄을 제거하고 EditorGUILayout 등을 이용해 직접 UI를 구성해야 합니다.
EditorGUILayout.LabelField()
- 텍스트 라벨을 추가하는 메서드입니다.
- EditorStyles.boldLabel을 사용하면 굵은 글씨로 강조할 수 있습니다.
EditorGUILayout.HelpBox()
- 설명 및 도움말 박스를 추가할 수 있습니다.
- MessageType.Info, MessageType.Warning, MessageType.Error 등의 옵션을 통해 메시지 스타일을 지정할 수 있습니다.
GUILayout.Button()
- 버튼을 추가하는 메서드입니다.
- 클릭하면 특정 기능을 수행하도록 설정할 수 있습니다.
결과
Custom Editor 적용 전
- speed 값이 기본 인스펙터에 숫자 입력란으로만 표시됩니다.
Custom Editor 적용 후
- 굵은 제목(Label)과 도움말(HelpBox)이 추가되었습니다.
- "Set Speed to 10" 버튼을 클릭하면 speed 값이 10으로 변경됩니다.
728x90
'내일배움캠프' 카테고리의 다른 글
내일배움캠프 Unity - TIL : 25.04.02 (0) | 2025.04.02 |
---|---|
내일배움캠프 Unity - TIL : 25.03.27 (0) | 2025.03.27 |
내일배움캠프 Unity - TIL : 25.03.25 (0) | 2025.03.25 |
내일배움캠프 Unity - TIL : 25.03.19 (0) | 2025.03.19 |
내일배움캠프 Unity - TIL : 25.03.18 (0) | 2025.03.18 |