前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二、编辑器开发之ContextMenu

二、编辑器开发之ContextMenu

作者头像
CoderZ
发布2022-08-29 15:34:44
4390
发布2022-08-29 15:34:44
举报
文章被收录于专栏:用户10004205的专栏

ContextMenu属性,允许我们在Inspect检视面板对Component组件添加菜单功能。

代码语言:javascript
复制
public ContextMenu (string itemName);
public ContextMenu (string itemName, bool isValidateFunction);
public ContextMenu (string itemName, bool isValidateFunction, int priority);

param1: itemName 表示菜单的路径。

param2: isValidateFunction 默认为false,为true时表明这是一个验证函数,它将在调用具有相同的itemName的菜单函数之前被调用。

param3: priority 优先级,表示菜单的显示顺序,默认为1000,数值越小的越靠上显示,若相邻菜单间差距大于11则会被分割线进行分割。

具体如下所示:

1. public ContextMenu (string itemName);

代码语言:javascript
复制
    [ContextMenu("Do Something")]
    public void DoSomething()
    {
        Debug.Log("Do Something.");
    }

点击该菜单项后,控制台会输出字符串"Do Something."

2. public ContextMenu (string itemName, bool isValidateFunction);

当isValidateFunction为true时表明这是一个验证函数,当返回值为true时,该菜单项才可以进行选择,否则不可选择。

代码语言:javascript
复制
    [ContextMenu("Function", false)]
    public void Function()
    {
        Debug.Log("Function Invoke.");
    }
    [ContextMenu("Function", true)]
    public bool FunctionValidate()
    {
        return false;
    }

如图所示,菜单项Function不可点击:

3. public ContextMenu (string itemName, bool isValidateFunction, int priority);

代码语言:javascript
复制
    [ContextMenu("Function1", false, 20)]
    public void Function1() { }
    [ContextMenu("Function2", false, 10)]
    public void Function2() { }
    [ContextMenu("Function3", false, 31)]
    public void Function3() { }

如图所示,priority数值越小的越靠上显示,差值大于11会被分割线进行分割。

综上所述,可见ContextMenu与MenuItem用法基本一致,可以参照第一篇文章 编辑器开发之MenuItem。

ContextMenu特性用于函数,它需要声明在函数上方,除此之外,另一个特性ContextMenuItem可以用于字段。

代码语言:javascript
复制
public ContextMenuItemAttribute (string name, string function);

param2: 点击该菜单要调用的函数。

如下,在Foo组件检视面板右键Size字段时,会显示Reset菜单项,点击后执行ResetSize函数,会将Size值归0.

代码语言:javascript
复制
    [ContextMenuItem("Reset", "ResetSize")]
    public int Size = 0;
    void ResetSize()
    {
        Size = 0;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 当代野生程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档