Extensión del editor de Unity (3): expande la ventana Inspector

1. La clase original hereda MonoBehaviour, como

public class Map : MonoBehaviour
{
    public int x;
    public int y;
}

Puede ver el efecto original, como se muestra a continuación.
inserte la descripción de la imagen aquí

2. Cree una clase de editor, herede Editor y agregue anotaciones CustomEditor

A continuación, debemos crear una clase que herede Editor y agregar anotaciones CustomEditor, el código es el siguiente

//typeof里写要重写Inpsctor事件的类。这里是Map
[CustomEditor(typeof(Map))]
public class MapEditor : Editor
{
    
}

3. Anular el método OnInspectorGUI()

el código se muestra a continuación

[CustomEditor(typeof(Map))]
public class MapEditor : Editor
{
    public override void OnInspectorGUI()
    {
        //绘制原来的窗口,如不增加此行代码。那么就不会绘制原有的变量
        DrawDefaultInspector();

        //接下来,可以在下面添加你个性化的组件
        
        //添加一个按钮
        if (GUILayout.Button("测试"))
        {
            Debug.Log("test");
        }
    }
}

Nuestras necesidades habituales son agregar botones u otras operaciones sobre la base original, por lo que aquí se debe agregar el núcleo DrawDefaultInspector();, que dibujará las variables originales. Si no la agrega, la variable original no se mostrará a menos que la escriba usted mismo.

Bueno, el efecto después de escribir es el siguiente, y sale el botón.
inserte la descripción de la imagen aquí
Además, como reescribimos la ventana para Map, el negocio común es obtener la clase Map. Puedes obtener el mapa a través del siguiente código

Map map = target as Map;

El código general es el siguiente

[CustomEditor(typeof(Map))]
public class MapEditor : Editor
{
    private Map map;
    
    public override void OnInspectorGUI()
    {
        //绘制原来的窗口,如不增加此行代码。那么就不会绘制原有的变量
        DrawDefaultInspector();

        //接下来,可以在下面添加你个性化的组件
        
        //添加一个按钮
        if (GUILayout.Button("测试"))
        {
            Debug.Log("test");
            
            //拿到原脚本
            map = target as Map;
            Debug.Log($"map.x:{map.x} map.y:{map.y}");
        }

        
    }
}

Supongo que te gusta

Origin blog.csdn.net/aaa27987/article/details/130071370
Recomendado
Clasificación