UnityEditor——GUI(2)ContextMenu(MonoBehavior菜单)

还有一些特殊菜单 Asset/.....       GameObject/... Component ....等 会在相应的区域生成一样的菜单
using UnityEngine;

public class MyMono : MonoBehaviour
{
    // ContextMenuItem(string name, string function)
    //右键点击这个属性会出现菜单点击执行
    [ContextMenuItem("reset", "MyReset")]
    public float speed;
   
    void Start()
    {
        
    }

    [ContextMenu("reset speed")]
    void MyReset()
    {
        Debug.Log("MyReset");
    }
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

**

自定义菜单— GenericMenu

**

using UnityEditor;
using UnityEngine;

public class TestMenuWindow : EditorWindow
{
    [MenuItem("Tool/Test Window")]
    public static void ShowWindow()
    {
        //    	//创建自定义窗口
        TestMenuWindow window = EditorWindow.GetWindow<TestMenuWindow>();
        window.Focus();
    }

    Rect rectRed = new Rect(100, 100, 500, 200);
    Rect rectGreen = new Rect(100, 400, 500, 200);
    //绘制区域
    void OnGUI()
    {
     
        EditorGUI.DrawRect(rectRed, Color.red); //绘制了一个红色区域
        EditorGUI.DrawRect(rectGreen, Color.green); //绘制了一个绿色区域

        GenericMenu menu = new GenericMenu();//创建一个自定义菜单
        Event evt = Event.current;

        if (evt.type == EventType.ContextClick)//右键点击事件
        {
            if (rectRed.Contains(evt.mousePosition))//在红色区域的范围类
            {
                //显示一个按钮名称("Show Click Red"),OnClickRed(点击按钮的方法)  "red"传递的内容
                menu.AddItem(new GUIContent("Show Click Red"), true, OnClickRed, "red");
                menu.AddSeparator("");//添加一条下划线
                menu.AddSeparator("Red");//添加一个说明
                menu.ShowAsContext();
            }

            if (rectGreen.Contains(evt.mousePosition))//在红色区域的范围类
            {
                //显示一个按钮名称("Show Click Red"),OnClickRed(点击按钮的方法)  "red"传递的内容
                menu.AddItem(new GUIContent("Show Click Green"), true, OnClickRed, "green");
                menu.ShowAsContext();
            }
        }
    }

    private void OnClickRed(object data)
    {
        //弹出一个自定义Dialog 窗口名字为("info") 显示的内容(data.ToString())   按钮名称("Ok")
        EditorUtility.DisplayDialog("info", data.ToString(), "Ok");
    }
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yang854426171/article/details/89222289