unity-Editor自定义Inspector面板

效果图:
在这里插入图片描述
代码展示:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(MapOperation))]
public class MapOperationEditor : Editor
{

    public override void OnInspectorGUI()
    {
       // DrawDefaultInspector();

        MapOperation myScript = (MapOperation)target;
        bool allowSceneObjects = !EditorUtility.IsPersistent(target);
        #region 输出世界坐标
        //if (myScript.tempObj == null)
        //    GUI.color = Color.red;
        //else
        //    GUI.color = Color.white;
        //myScript.tempObj = (Transform)EditorGUILayout.ObjectField("输出物品世界坐标", myScript.tempObj, typeof(Transform), allowSceneObjects);
        //GUI.color = Color.white;
        //if (GUILayout.Button("输出"))
        //{
        //    if (myScript.tempObj == null) return;
        //    Debug.Log(myScript.tempObj.position);
        //}
        //EditorGUILayout.Space();
        //EditorGUILayout.Space();
        //EditorGUILayout.Space();
        #endregion

        #region 重命名属性

        myScript.nameByPos = EditorGUILayout.Toggle("是否根据坐标位置命名", myScript.nameByPos);

       

        myScript.IsMapEditor = EditorGUILayout.Toggle("是否用于地图编辑器命名", myScript.IsMapEditor);
        myScript.index = EditorGUILayout.IntSlider("方格在父物体下的层次数", myScript.index, 1,2 );

        if (myScript.Parent == null)
            GUI.color = Color.red;
        else
            GUI.color = Color.white;
        myScript.Parent = (Transform)EditorGUILayout.ObjectField("重命名物体父物体", myScript.Parent, typeof(Transform), allowSceneObjects);
        if (myScript.nameByPos)
        {
            if (myScript.startTrans == null)
                GUI.color = Color.red;
            else
                GUI.color = Color.white;
            myScript.startTrans = (Transform)EditorGUILayout.ObjectField("XZ为二维坐标轴的第一个格子", myScript.startTrans, typeof(Transform), allowSceneObjects);

            //if (myScript.X == -100)
            //    GUI.color = Color.red;
            //else
            //    GUI.color = Color.white;
            //myScript.X = EditorGUILayout.DoubleField("方格起始点X坐标", myScript.X);
            //if (myScript.Z == -100)
            //    GUI.color = Color.red;
            //else
            //    GUI.color = Color.white;
            //myScript.Z = EditorGUILayout.DoubleField("方格起始点Z坐标", myScript.Z);
            if (myScript.size == new Vector2Int(0, 0))
                GUI.color = Color.red;
            else
                GUI.color = Color.white;
            myScript.size = EditorGUILayout.Vector2IntField("方格规格", myScript.size);
        } 
        GUI.color = Color.white;
        if (GUILayout.Button("重命名"))
        {
            if (myScript.size == new Vector2Int(0, 0)/* || myScript.X==-100|| myScript.Z == -100*/||
                myScript.Parent == null||
                myScript.startTrans==null) return;
                myScript.Rename();
        }
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        #endregion

        #region 剔除格子
        if (myScript.DeleteConfig == null)
            GUI.color = Color.red;
        else
            GUI.color = Color.white;
        myScript.DeleteConfig = (TextAsset)EditorGUILayout.ObjectField("剔除格子数据表", myScript.DeleteConfig, typeof(TextAsset), allowSceneObjects);
        GUI.color = Color.white;
        if (GUILayout.Button("剔除格子"))
        {
            if (myScript.DeleteConfig == null) return;
            myScript.DeleteNullGrids();
        }
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        #endregion
    }

}

其中MapOperation就是自定义面板的脚本,需要继承自MonoBehaviour

注:字体有点丑,暂时没找到更换字体和颜色得解决方案 找到在更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值