Unity编辑器扩展-第五集-撤回操作/禁止操作/加快捷键

这篇具有很好参考价值的文章主要介绍了Unity编辑器扩展-第五集-撤回操作/禁止操作/加快捷键。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第四集链接:Unity编辑器扩展-第四集-获取物体的方法_菌菌巧乐兹的博客-CSDN博客

 一、本节目标+效果展示 

1.加入撤回操作

众所周知“撤回是ctrl+z”,但如果你前几集仔细练习了,你会发现一个让你头痛不已的事情,用代码改的东西没法撤回。现在就是,我们搞一下,然后能撤回。

unity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unity

2.我们希望,在能操作的时候,他是黑色能点的,如果不能操作,就是灰色不能点的

 unity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unityunity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unity

 3.加快捷键

unity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unity

二、加入撤回操作

我们平时的操作,每一步,都会被程序记录下来,但是我们代码的操作,是不会记录的。所以我们无法撤回。

拿出新的类:Undo,这个类里面都是和过程记录有关的东西,但我们今天只讲一个

Undo.RecordObject(记录哪个物体, "给这个操作起个名");

 例:

我们之前,批量修改文件名的代码为

    [MenuItem("第五集")]
    static void ChangeName() {
        foreach (GameObject obj in Selection.gameObjects)
        {
            //这里修改了物体obj的名称
            obj.name = obj.transform.GetSiblingIndex().ToString();
        }
    }

 所以我们就希望记住所有obj这个物体的所有修改。

代码变为:

    [MenuItem("第五集")]
    static void ChangeName() {
        foreach (GameObject obj in Selection.gameObjects)
        {
            //记录物体的方法   //你打算记录哪个物体  //给这个操作随便起个名
            Undo.RecordObject(obj, "撤回物体修改");
            obj.name = obj.transform.GetSiblingIndex().ToString();
        }
    }

这样就可以撤回啦。

三、黑色能点,不能操就灰色

还记得那些年我们挖了个坑:

unity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unity

 这个中间的true和false没有讲。

这里问的是,你到底是个普通的方法还是验证方法,如果填false就是普通方法,之前那样,执行的方法,如果填true,你就是验证普通方法能不能用的方法。

例:我们现在拥有的普通方法是

    [MenuItem("GameObject/第五集",false,1)]
    static void ChangeName() {
        foreach (GameObject obj in Selection.gameObjects)
        {
            Undo.RecordObject(obj, "撤回物体修改");
            obj.name = obj.transform.GetSiblingIndex().ToString();
        }
    }

但是,我们要对这个方法,进行验证,需求:当Selection.gameObjects的数量大于0的时候,就可以点,其他时候不能点:

    //验证方法
    //新定了一个方法,但是标签还是之前那个,除了true和false不一样
    [MenuItem("GameObject/第五集", true,1)]
    //最后返回的是true或者false,所以这里要填bool
    //方法名字可以随便起就好
    static bool ControlChangeName()
    {
        //这部分是我们的需求,大于0就显示可以用,其他就显示不能用
        if (Selection.gameObjects.Length > 0)
        {
            return true;
        }
        else {
            return false;
        }
    }

    //普通方法
    [MenuItem("GameObject/第五集",false,1)]
    static void ChangeName() {
        foreach (GameObject obj in Selection.gameObjects)
        {
            Undo.RecordObject(obj, "撤回物体修改");
            obj.name = obj.transform.GetSiblingIndex().ToString();
        }
    }

四、加快捷键

我们普通的名字是:

[MenuItem("GameObject/第五集",false,1)]
或者
[MenuItem("GameObject/第五集")]

如果你希望快捷键是一个字母:

[MenuItem("GameObject/第五集 _p",false,1)]
 语言描述就是:名字后面+空格+一个下划线+你喜欢的字母

unity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unity

 如果你希望快捷键是shift + 一个字母:

[MenuItem("GameObject/第五集 #p",false,1)]
空格+井号+字母

unity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unity

 

  如果你希望快捷键是ctrl + 一个字母:

[MenuItem("GameObject/第五集 %p",false,1)]
空格+百分号+字母

unity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unity

   如果你希望快捷键是alt + 一个字母:

[MenuItem("GameObject/第五集 &p",false,1)]

unity撤回快捷键,# Unity编辑器扩展,编辑器,c#,unity

  五、所有代码

这集大可不必了吧。文章来源地址https://www.toymoban.com/news/detail-520863.html

到了这里,关于Unity编辑器扩展-第五集-撤回操作/禁止操作/加快捷键的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity编辑器扩展之GenericMenu菜单扩展

    内容将会持续更新,有错误的地方欢迎指正,谢谢!   Unity编辑器扩展之GenericMenu自定义菜单       TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取! 助力快速掌握 GenericMenu 菜单扩展 为初学者节省宝贵的

    2024年02月01日
    浏览(76)
  • Unity 扩展自定义编辑器窗口

    在Assets文件夹路径下任意位置创建Editor文件夹,将扩展编辑器的代码放在Editor文件夹下 代码中首先引用命名空间 然后将创建的类继承自EditorWindow 然后通过扩展编辑器菜单功能调用创建窗口的方法 要注意方法中泛型参数需要传入的是自己代码的类,这个功能是根据后面OnGUI方

    2024年04月27日
    浏览(57)
  • Unity 编辑器扩展之 Attribute

    Unity内置属性[Attribute]是一种类似修饰功能的标签。可以对OnSceneGUI,InspectorGUI,MenuGUI,WindowGUI等实现各种各样的GUI扩展。用户只要添加上特性标签,就能够自由的使用这些扩展功能。下面列出一些常用的标签: 隐藏属性在Inspector面板上的显示。在继承了MonoBehaviour的类中,用

    2023年04月09日
    浏览(71)
  • Unity编辑扩展:功能篇之Json数据编辑器

    前言 编辑器扩展算是比较纯粹的功能开发,基本没有什么理论知识,都是一些 Unity 相关接口的使用与数据类型的设计操作等。在本篇文章主要的文字描述基本都是在做代码解释,为了使内容接受度更高,我会尽量描述到代码结构中的每个细节。如果有对此不太了解又很感兴

    2024年02月06日
    浏览(103)
  • 【Unity编辑器扩展】| Inspector监视器面板扩展

    前言 前面我们介绍了Unity中编辑器扩展的一些基本概念及基础知识,还有编辑器扩展中用到的相关特性Attribute介绍。 后面就来针对Uniity编辑器扩展中比较常用的模块进行学习介绍。 本文就来详细介绍一下Unity编辑器扩展中关于 Inspector面板 扩展功能学习。

    2024年02月08日
    浏览(66)
  • 盘点Unity几款编辑器扩展工具

    unity 编辑器一个不容忽视的强大之处就是非常易于自定义扩展工具,来满足各种各样的美术、策划及程序上的需求。今天为大家介绍Asset Store资源商店中几款实用的编辑器扩展工具,帮助大家直接在Unity编辑器中完成3D建模与调整工作,免去与其它软件进行数据转换的过程,从

    2024年04月09日
    浏览(49)
  • Unity编辑器扩展-第四集-获取物体的方法

    第三集链接:Unity编辑器扩展-第三集-添加按钮到组件菜单并且重置组件_菌菌巧乐兹的博客-CSDN博客  一、本节目标+效果展示 1.改选中单个物体的名字 2.改选中所有物体的名字  3.选中了所有的物体,但只改第一层物体的名称  4.来个有用的(选中的所有物体,按顺序起名)

    2024年02月14日
    浏览(59)
  • 【Unity UIToolkit】UIBuilder基础教程-制作简易的对话系统编辑器 3步教你玩转Unity编辑器扩展工具

    随着Unity开发的深入,基本的Unity编辑器界面并不能满足大部分玩家高阶开发的要求。为了提高开发的效率,有针对性的定制化扩展编辑器界面是提高开发效率的不错选择。 今天就给大家带来Unity官方提高的编辑器扩展工具UIToolkit(集成了UIBuilder和UI Debugger等插件)的使用教程。

    2024年02月04日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包