Unity Editor 基础篇(十四):Scene面板菜单

Unity Editor 基础篇(十四):Scene面板菜单

效果:

代码:(脚本放在Editor目录)

public class SceneEditor {

    [InitializeOnLoadMethod]  //unity初始化时调用
    static void Init()
    {
        SceneView.onSceneGUIDelegate += OnSceneGUI;
    }
	
	 static void OnSceneGUI(SceneView sceneView)
	 {
	     //...
	 }
}

这样Scene面板刷新时候会执行这里的OnSceneGUI方法。

例如 我们想点击Scene面板时候打开一个菜单,这在OnSceneGUI函数里写:

 ddCommonItems();
 Show();
 调用这两个函数;
 定义在下面:
 static public void AddCommonItems()
{
       AddItem("新建", false, UIEditorHelper.CreatNewLayoutForMenu); //第三个参数是点击按钮要调用的函数
       AddItem("打开界面", false, UIEditorHelper.LoadLayout);
       AddItem("打开文件夹", false, UIEditorHelper.LoadLayoutWithFolder);
 }
  static public void Show()
{
    if (mMenu != null)
    {
        mMenu.ShowAsContext();
        mMenu = null;
        mEntries.Clear();
    }
}

AddItem调用的是下面的函数:

static List<string> mEntries = new List<string>();
static GenericMenu mMenu;
static public void AddItem(string item, bool isChecked, GenericMenu.MenuFunction callback)
{
    if (callback != null)
    {
        if (mMenu == null) mMenu = new GenericMenu();
        int count = 0;

        for (int i = 0; i < mEntries.Count; ++i)
        {
            string str = mEntries[i];
            if (str == item) ++count;
        }
        mEntries.Add(item);

        if (count > 0) item += " [" + count + "]";
        mMenu.AddItem(new GUIContent(item), isChecked, callback);
    }
    else AddDisabledItem(item);
}

static public void AddDisabledItem(string item)
{
    if (mMenu == null) mMenu = new GenericMenu();
    mMenu.AddDisabledItem(new GUIContent(item));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值