Version: 2021.3
언어: 한국어
Extending the Editor
프로퍼티 드로어

에디터 창

애플리케이션에 커스텀 창을 얼마든지 생성할 수 있습니다. 커스텀 창은 인스펙터, 씬 또는 기타 빌트인 창처럼 작동합니다. 이 방법은 게임의 하위시스템에 사용자 인터페이스를 추가하는 데 유용합니다.

컷씬 액션 스크립팅에 사용되는 기능성 게임 인터렉티브에 의한 커스텀 에디터 인터페이스
컷씬 액션 스크립팅에 사용되는 기능성 게임 인터렉티브에 의한 커스텀 에디터 인터페이스

아래의 간단한 절차를 따라 커스텀 에디터 창을 만들 수 있습니다.

  • 에디터 창에서 파생되는 스크립트를 작성합니다.
  • 코드를 사용하여 창이 자동으로 표시되도록 합니다.
  • 툴에 대한 GUI 코드를 구현합니다.

에디터 창에서 파생

커스텀 에디터 창을 만들기 위해서는 스크립트를 “Editor”라는 폴더 안에 저장해야 합니다. 에디터 창에서 파생되는 이 스크립트에 클래스를 만든 다음, 내부 OnGUI 함수에 GUI 컨트롤을 작성합니다.

using UnityEngine;
using UnityEditor;
using System.Collections;

public class Example : EditorWindow

    {
        void OnGUI () {
            // The actual window code goes here
           }
    }

_ 프로젝트 내 ‘Editor’ 폴더에 있는 MyWindow.js_

창 표시

화면에 창을 표시하려면 창을 표시하는 메뉴 아이템을 생성합니다. 이 작업은 MenuItem 프로퍼티를 통해 활성화되는 함수를 작성하여 수행합니다.

Unity의 기본 설정은 창을 재활용합니다 따라서 메뉴 아이템을 다시 선택하면 기존 창이 표시됩니다. 이 작업은 EditorWindow.GetWindow 함수를 사용하여 수행됩니다. 예제:

using UnityEngine;
using UnityEditor;
using System.Collections;

class MyWindow : EditorWindow {
    [MenuItem ("Window/My Window")]

    public static void  ShowWindow () {
        EditorWindow.GetWindow(typeof(MyWindow));
    }
    
    void OnGUI () {
        // The actual window code goes here
    }
}

MyWindow 표시

호출 간 포지션을 저장하거나 커스텀 레이아웃에 사용하는 등 도킹 가능한 스탠다드 에디터 창을 생성할 수 있습니다. 생성한 창에 더 많은 컨트롤을 적용하려면 GetWindowWithRect를 사용할 수 있습니다.

창의 GUI 구현

창의 실제 콘텐츠는 OnGUI 함수를 구현하여 렌더링합니다. 인게임 GUI(GUIGUILayout)에 사용하는 것과 동일한 UnityGUI 클래스를 사용할 수 있습니다. 또한 EditorGUIEditorGUILayout 에디터 전용 클래스에 있는 GUI 컨트롤도 몇 개 더 제공됩니다. 이 클래스는 일반 클래스에 이미 사용 가능한 컨트롤에 추가되므로 원하는 경우 믹스 앤 매치를 할 수 있습니다.

다음 C# 코드는 커스텀 에디터 창에 GUI 요소를 추가하는 방법을 나타냅니다.

using UnityEditor;
using UnityEngine;

public class MyWindow : EditorWindow
{
    string myString = "Hello World";
    bool groupEnabled;
    bool myBool = true;
    float myFloat = 1.23f;
    
    // Add menu item named "My Window" to the Window menu
    [MenuItem("Window/My Window")]
    public static void ShowWindow()
    {
        //Show existing window instance. If one doesn't exist, make one.
        EditorWindow.GetWindow(typeof(MyWindow));
    }
    
    void OnGUI()
    {
        GUILayout.Label ("Base Settings", EditorStyles.boldLabel);
        myString = EditorGUILayout.TextField ("Text Field", myString);
        
        groupEnabled = EditorGUILayout.BeginToggleGroup ("Optional Settings", groupEnabled);
            myBool = EditorGUILayout.Toggle ("Toggle", myBool);
            myFloat = EditorGUILayout.Slider ("Slider", myFloat, -3, 3);
        EditorGUILayout.EndToggleGroup ();
    }
}

위의 예제를 통해 생성된 창은 다음과 같습니다.

제공된 예제를 사용하여 생성한 커스텀 에디터 창
제공된 예제를 사용하여 생성한 커스텀 에디터 창

자세한 내용은 에디터 창 페이지의 예제와 문서를 참조하십시오.

Extending the Editor
프로퍼티 드로어