📌 개요
최근 Unity Editor 제작에 관심이 많습니다.
- 현업에서 기획자 또는 아트를 위한 툴 제작
- 게임 개발에 자주 사용되는 기능을 툴로 제작
- 신규 프로젝트를 위한 기본 템플릿
등등...
단순히 게임 컨텐츠 제작 뿐만 아니라, 툴을 직접 개발하는 경우도 많더라구요.
그래서 Unity Editor에 대해 기초부터 공부하고자 합니다.
📌 EditorWindow
EditorWindow : Unity Editor 내부에 개발자를 위한 도구나 툴을 제작할 수 있도록 돕는 클래스
Unity의 기본 제공 창인 Scene, Inspector, Console과 비슷한 동작을 하는 커스텀 창을 만들 수 있습니다. EditorWindow을 통해 주로 사용하는 주요 메서드와 이벤트를 살펴보도록 하겠습니다.
// 메뉴에 "My Custom Window" 항목 추가
[MenuItem("My Custom Window/Open")]
public static void ShowWindow()
{
// 창 생성 및 표시
var window = GetWindow<MyCustomWindow>("My Custom Window");
// window.Show();
}
GitWindow<T>(string window_name)
커스텀 창을 생성하고 표시합니다.
Show() 메서드를 통해 창을 표시할 수도 있습니다.
다만, GetWindow()와 다른 점은 기존 창이 열려 있어도 중복으로 열리지 않습니다.
private void OnGUI()
{
// UI 갱신
}
OnGUI()
Window 창에 UI를 렌더링할 때 사용하며, 모든 UI 요소는 이 메서드에서 정의됩니다.
Update() 메서드도 존재하는데, Monobehaviour에서 제공하는 Update 메소드와 유사합니다.
매 프레임마다 호출됩니다.
💡 MonoBehaviour.Update VS EditorWindow.Update 차이점
MonoBehaviour.Update는 런타임 환경에서, EditorWindow.Update는 에디터 환경에서 호출됩니다.
그 외 메서드들
OnEnable() : 창이 열릴 때 호출
OnDisable() : 창이 닫힐 때 호출
OnFocus() : 창이 포커스 될 때 호출
OnLostFocus() : 창의 포커스가 사라질 때 호출
📌 GUILayout & EditorGUILayout & EditorStyle
private void OnGUI()
{
GUILayout.Label("Hello, Unity Editor!", EditorStyles.boldLabel);
// 텍스트 입력 필드
textFieldValue = EditorGUILayout.TextField("Input Text:", textFieldValue);
// 버튼 생성
if (GUILayout.Button("Click Me"))
{
Debug.Log("Button Clicked! Input: " + textFieldValue);
}
}
GUILayout & EditorGUILayout은 IMGUI에서 기본 UI 요소를 배치하는 데 사용됩니다.
(IMGUI : Immediate Mode GUI, Unity GUI 시스템 중 하나로, Editor 환경에서 UI를 빠르게 그리기 위한 도구)
- GUILayout : IMGUI 시스템에서 제공하는 UI 요소 배치 클래스 (자동 레이아웃 시스템, 간단한 처리 제공)
- EditorGUILayout : 에디터 환경에 특화된 UI 요소 배치 클래스 (GUILayout과 비슷하지만, 에디터에서 자주 사용되는 기능과 오브젝트, 에셋 등 추가 제공)
- EditorStyles : IMGUI 요소에 스타일을 적용하는 클래스 (레이아웃 사용자 설정)
위 세 가지를 조합하여 Unity 에디터 도구를 개발할 수 있습니다. 각 클래스의 기능은 다음 포스터에서 자세히 다뤄보도록 하겠습니다.
[ Unity Editor 공식 문서 ]
에디터 창 - Unity 매뉴얼
애플리케이션에 커스텀 창을 얼마든지 생성할 수 있습니다. 커스텀 창은 인스펙터, 씬 또는 기타 빌트인 창처럼 작동합니다. 이 방법은 게임의 하위시스템에 사용자 인터페이스를 추가하는 데
docs.unity3d.com
즉시 모드 GUI(IMGUI) - Unity 매뉴얼
“즉시 모드” GUI 시스템(IMGUI라고도 함)은 Unity의 메인 게임 오브젝트 기반 UI 시스템과 완전히 별개의 기능입니다. IMGUI는 코드 기반 GUI 시스템이며, 주로 프로그래머를 위한 툴로 사용됩니다. On
docs.unity3d.com
'유니티(Unity) > 커스텀 에디터' 카테고리의 다른 글
[EditorUtility.DisplayDialog] 팝업 창 제작 (0) | 2025.01.19 |
---|---|
[FilePath] 에디터 환경 변수 저장 (0) | 2025.01.18 |
[Unity 기능] 커스텀 패키지 제작하기 (1) | 2024.12.20 |