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

news2024/12/22 21:31:28

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

 一、本节目标+效果展示 

1.加入撤回操作

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

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

 

 3.加快捷键

二、加入撤回操作

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

拿出新的类: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();
        }
    }

这样就可以撤回啦。

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

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

 这个中间的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)]
 语言描述就是:名字后面+空格+一个下划线+你喜欢的字母

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

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

 

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

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

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

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

  五、所有代码

这集大可不必了吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JMeter如何和Charles进行接口测试

目录 一、什么是接口测试? 二、接口测试的好处 三、接口测试如何开展 四、如何使用JMeter 总结: 什么是接口测试,接口测试到底如何开展,我相信任何一个软件测试人员都会有这样的疑问, 这里我以接口测试自动化平台…

7.Sentinel控制台 配置 nacos持久化

一、Sentinel 持久化机制 推送模式说明优点缺点原始模式API将规则推送至客户端并直接更新到内存中,扩展写数据源简单、无任何依赖不保证一致性;规则保存在内存中,重启不建议用于生产环境PULL模式客户端主动向某个规则管理中心定期轮询拉取规则,<br />这个规则中心可以…

Discovery Holdings 探索没有复杂性的多云机会

开发新的产品和服务&#xff0c;让客户 “惊叹”&#xff0c;是业界一个一直以来的的承诺&#xff0c;尤其是在一个快节奏的数字世界。提供金融服务的公司面临着敏捷的金融科技公司的威胁和不断变化的客户期望的持续压力。为了保持领先地位&#xff0c;他们需要提供价值、自助服…

【送书福利-第十二期】前沿技术、人工智能、集成电路科学与芯片技术、新一代信息与通信技术、网络空间安全技术,四大热点领域热书!

大家好&#xff0c;我是洲洲&#xff0c;欢迎关注&#xff0c;一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我&#xff01; 本文目录 一、前言二、书籍介绍1、《Web3…

【夜深人静学数据结构与算法 | 第三篇】 二叉树

目录 前言&#xff1a; 二叉树&#xff1a; 二叉树的种类&#xff1a; 二叉树的存储方式&#xff1a; 1. 链式存储 2. 数组存储 二叉树的遍历方式 深度优先遍历 广度优先遍历 总结&#xff1a; 前言&#xff1a; 本文将会详细的介绍各种常见的树以及相对应的概念&…

iTOP-RK3588 | Linux系统和应用开发手册

iTOP -RK3588开发板使用手册上新&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 迅为RK3588开发板已经对Linux系统完成适配&#xff0c;同时新增了对应的文档教程辅助大家参考学习——《itop-3588开发板Linu…

戴着很舒服的蓝牙耳机推荐,佩戴舒适度高的蓝牙耳机分享

​无论是日常通勤还是运动健身&#xff0c;相信大多数朋友都喜欢一边在朝夕的奔波路上&#xff0c;或是休息锻炼的闲散时间中&#xff0c;一边听着好听的音乐营造一份轻松愉悦的氛围感来放松自己的心情。随着蓝牙耳机的增长和功能增加&#xff0c;很多用户找不到一款好用且适合…

从乐观到悲观:MySQL中不同类型的锁全面解析

大家好&#xff0c;我是你们的小米&#xff01;今天我要和大家分享关于MySQL的乐观锁和悲观锁&#xff0c;以及不同类型的锁。锁作为数据库中重要的概念之一&#xff0c;对于保证数据的一致性和并发性至关重要。现在就让我们一起来深入了解吧&#xff01; 为什么需要锁 在并发…

Android Compose UI实战练手----Google Bloom欢迎页

目录 1.概述2.效果图展示2.1 亮色主题效果&#xff1a;2.2 深色主题效果 3.项目结构解析3.1 颜色配置Color.kt3.2 形状配置Shape.kt3.3 主题配置Theme.kt3.4 字体配置 Type.kt 4.沉浸式状态栏适配5.UI界面分解及实现5.1 欢迎页背景内容5.2 欢迎页内容组件实现 5.3 欢迎页内容的…

自动化测试成熟度模型

目录 前言&#xff1a; 重新认识自动化测试 新手落地自动化测试 自动化测试成熟度模型 初级阶段-测试半自动化 中级阶段-回归测试自动化 高级阶段-大范围自动化测试 成熟阶段-自动化测试流水线 前言&#xff1a; 随着软件行业的快速发展&#xff0c;软件质量已经成为各…

chatgpt赋能python:Python如何绘制坐标轴

Python如何绘制坐标轴 在数据可视化中&#xff0c;坐标轴是一种非常常见的图形元素&#xff0c;其作用是让人们更好地理解和分析数据。在Python编程中&#xff0c;我们可以使用各种数据可视化库如Matplotlib和Seaborn来绘制坐标轴。本文将介绍如何使用Matplotlib库来绘制坐标轴…

17. 数据结构之图

前言 前面介绍了队列&#xff0c;栈等线性数据结构&#xff0c;二叉树&#xff0c;AVL树等非线性数据结构&#xff0c;本节&#xff0c;我们介绍一种新的非线性数据结构&#xff1a;图。图这种结构有很广泛的应用&#xff0c;比如社交网络&#xff0c;电子地图&#xff0c;多对…

【JVM篇】Java内存区域与OOM

目录 1、概述 2、运行时数据区域 3、程序计数器 4、Java虚拟机栈 5、本地方法栈 6、Java堆 7、方法区 8、运行时常量池 9、直接内存 1、概述 内存是非常重要的系统资源&#xff0c;是硬盘和 CPU 的中间仓库及桥梁&#xff0c;承载着操作系统和应用程序的实时运行。JVM…

Windows Server 2025预览版安装配置

一、安装篇 1.2.目前最新版是 25379版本&#xff0c;需要注册微软账户&#xff0c;加入先期预览计划才可以下载。 下载完镜像后&#xff0c;制作U盘启动盘&#xff0c;安装。 注意&#xff1a;无论是rufs制作启动盘&#xff0c;还是在安装的时候&#xff0c;都要使用UEFI模式…

Spring boot开发微信小游戏后台-websocket服务

最近在做一个微信小游戏的后台&#xff0c;需要使用websocket与小游戏端建立连接&#xff0c;实时推送数据&#xff0c;小游戏后台是一个单体spring boot项目&#xff0c;管理玩家的一些基础信息和游戏配置信息&#xff0c;起初在这个单体项目中加入了websocket&#xff0c;可以…

spring boot+easyui粮油质量管控防伪溯源系统源码

基于物联网技术、RFID技术和RSA、PGP加密算法开发的粮油质量追溯系统 粮油安全关系千千万万消费者的健康问题。近年来&#xff0c;许多食品行业安全事故频频涌现&#xff0c;成为社会关注焦点。粮油生产加工质量管控防伪溯源系统为粮油提供从种植、生产、加工、销售等各环节的…

Linux下实现自己的printf函数

Linux下实现自己的printf函数 文章目录 Linux下实现自己的printf函数项目中的使用实现自己的printf函数 项目中的使用 /*********************************************************************** 函数名称&#xff1a; DebugPrint* 功能描述&#xff1a; 打印信息的总入口函…

Nodejs四、npm与包

零、文章目录 Nodejs四、npm与包 1、包 &#xff08;1&#xff09;包是什么 Node.js 中的第三方模块又叫做包。就像电脑和计算机指的是相同的东西&#xff0c;第三方模块和包指的是同一个概念&#xff0c;只不过叫法不同。 &#xff08;2&#xff09;包的来源 不同于 Nod…

Linux SSH PublicKey 登录

前言 ssh 远程登录密码认证的方式有 Password、Keyboard Interactive 和 Public Key 三种主要方式。 前面两种方式就是密码认证&#xff0c;含义都是一样大同小异。第三种是登录方式最安全的一种&#xff0c;也是我们常用的云服务器默认使用的一种方式。 本文就如何配置并使用…

torchvision.ops.nms实现NMS

nms原理&#xff1a; 当目标检测模型对一个目标有多个检测框时&#xff0c;需要滤掉多余的框&#xff0c;留下最接近真实目标的框。 步骤是这样的&#xff1a; 1.先把目标框初筛一波&#xff0c;比如设阈值为0.25, 把预测概率 < 0.25的目标框滤掉。 2.把 每个类别的 目标框 …