Editor 확장 - Window 만들기

3390 단어 editorUnity

가져오기


Editor로 자신의 작품을 확장해서 만드는 Window에 대해서 들어볼게요.

방법


Editor Window 클래스가 파생된 클래스 만들기

using UnityEngine;
using UnityEditor;
public class MyWindow : EditorWindow {
}
이렇게 하면 자신의 윈도를 만들 수 있다.
Editor Window를 단순히 상속하는 것이 중요합니다.
정말 그냥 그래요.
그리고 이 윈도우를 켜면 돼요.

창을 여는 함수

private static MyWindow _myWindow;

public static void Open() {
    if (_myWindow == null) {
        _myWindow = CreateInstance<Example>();
    }
    _myWindow.Show();
}
Instance가 이미 있는지 확인하지 않으면 Window가 계속 증가하므로 로컬 변수로 캐시합니다.
다만, 유니티 쪽에서 내부적으로 이런 처리를 할 수 있는 편리한 함수가 있기 때문에 기본적으로 그것을 사용하자.
public static void Open ()
{
    // 既に EditorWindow が存在すればそのインスタンスを取得する。なければ生成する。最後に Show 関数を実行する。
    GetWindow<MyWindow>();
}

호출 함수


함수를 호출하는 방법은 매우 많다.
자기가 자주 하는 방법은 두 가지가 있어요.

1. Unity 제목 메뉴에 추가


My Window 메뉴에는 My Window가 추가되었습니다.
창을 열려면 여기를 누르십시오.

2. 특정 Asset의 Inspector에 표시


특정 데이터 자산의 Inspector에서 Window 열기 버튼을 구성합니다.

소스 코드


1. 머리글 메뉴에 추가


소스 코드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class MyWindow : EditorWindow {
    [MenuItem("Window/My Window")]
    private static void Open() {
        EditorWindow.GetWindow(typeof(MyWindow));
    }
}

주안점

[MenuItem("Window/My Window")]
네.
정적 함수에 이 Attribute를 추가하면 Unity 머리글에 추가됩니다.
Unity 측면의 제목 메뉴에서 버튼을 선택하면 함수가 호출됩니다.

2. 특정 Asset의 Inspector에 표시


소스 코드

using UnityEngine;
using UnityEditor;

/// <summary>
/// SampleAssetEditor
/// </summary>
[CustomEditor(typeof(SampleAsset), true)]
public class SampleAssetEditor : Editor
{
    #region unity_script

    /// <summary>
    /// インスペクタ拡張
    /// </summary>
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("Open Editor") && target is SampleAsset) {
            EditorWindow.GetWindow(typeof(MyWindow));
        }
    }

    #endregion
}

주안점

[CustomEditor(typeof(SampleAsset), true)]
네.
• Editor 클래스를 확장하는 범주 만들기
• Custom Editor에서 Inspector를 확장할 범주를 지정합니다.
・ SampleAsset의 상속인에게 두 번째 매개변수의 진짜와 거짓이 적합한지 여부를 지정합니다.

작은 지식


Custom Editor를 지정하면 다음 변수에 지정된 카테고리의 매개변수가 자동으로 저장됩니다.
・"serializedObject"변수에서 이 등급의 SerializedObject를 설정합니다
• "target"변수에 Unity Engine 을 추가합니다.Object형, 이 클래스를 저장하는 Component(역할 할당 필요)
이 기능을 사용하면 On Inspector GUI 변경 매개 변수가 정형화됩니다.
하지만 SerializedObject를 통해 값을 변경하면 Unndo를 설치할 필요가 없기 때문에 그곳을 이용해 변경하는 것을 추천합니다.
또한 SerializedObject를 통해 privte 변수에 접근할 수 있습니다.
Editor를 확장하기 위해서는public과 액세서리를 만들 필요가 없습니다.
(SerializedField 설정이 없으면 안 됨)

최후


윈도는 아주 간단하게 할 수 있다.
나머지는 그걸 어떻게 맞춤형으로 만드는지 뿐이야.

좋은 웹페이지 즐겨찾기