还有一些特殊菜单 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");
}
}