【Unity】 HTFramework框架(二十四)Utility编辑器实用工具

更新日期:2019年11月11日。
Github源码:[点我获取源码]

Utility编辑器实用工具简介

Utility编辑器实用工具包含多个提升开发效率、调试效率的编辑器工具。

使用Utility

批处理工具 Component Batch

ComponentBatch批处理工具用于批量处理Scene场景中任意组件。

打开 Component Batch

在这里插入图片描述
在这里插入图片描述
1.Root:批处理的根物体。
2.Component Filter:批处理目标组件的名称筛选器。
3.Component:批处理目标组件。
4.Include Inactive:是否涵盖未激活的组件。
5.Collect:开始收集组件。

批处理 Component

例如批处理Canvas物体下的所有Text组件,我们将Canvas设置为根物体。
在这里插入图片描述
在筛选栏中输入text,再点击Component下拉菜单,在筛选出来的组件中找到我们的目标组件UnityEngine.UI.Text。

注意:筛选器的作用只是为了排除多余的不符合要求的组件。
在这里插入图片描述
在这里插入图片描述
到此,我们直接点击Collect按钮就可以筛选出Canvas物体下的所有Text组件了,在这里,我们就可以批量处理Canvas物体下的四个Text组件的属性。
在这里插入图片描述

批处理工具 Project Batch

ProjectBatch批处理工具用于批量处理Project目录中的任意对象。

打开 Project Batch

在这里插入图片描述
在这里插入图片描述
1.Folder:批处理的根文件夹。
2.Object Filter:批处理目标对象的名称筛选器。
3.Object:批处理目标对象。
4.Collect:开始收集对象。

批处理 Object

例如批处理Image文件夹下的所有Texture对象,我们将Image设置为根文件夹。
在这里插入图片描述
在筛选栏中输入texture,再点击Object下拉菜单,在筛选出来的对象中找到我们的目标对象UnityEngine.Texture。

注意:筛选器的作用只是为了排除多余的不符合要求的对象。
在这里插入图片描述
在这里插入图片描述
到此,我们直接点击Collect按钮就可以筛选出Image文件夹下的所有Texture对象了,在这里,我们就可以批量处理所有Texture对象的属性。
在这里插入图片描述

程序集查看器 Assembly Viewer

AssemblyViewer用于查看当前程序域的所有程序集,功能包括浏览程序集中所有类型,浏览类型的所有字段、属性、方法等,是开发编辑器工具的得力助手。

打开程序集查看器

在这里插入图片描述

使用程序集查看器

例,使用程序集查看器实现编辑器的实用功能:快捷键清理控制台

首先我们要想到,一键清理控制台的功能是Unity编辑器提供的,所以我们只需要反射到那个清理控制台的方法,直接调用就可以了。

所以最重要的工作就是找到那个Unity编辑器中用来清理控制台的方法。

毫无疑问,所有编辑器功能无一例外都会从UnityEditor程序集开始查找,我们在Assembly栏找到UnityEditor程序集并选中它。
在这里插入图片描述
此时的Type栏便显示UnityEditor程序集中的所有类型,我们在搜索框输入log,经过一系列筛选,我们最终锁定了LogEntries为目标,在Type栏选中它。
在这里插入图片描述
很遗憾的得知他是一个封闭的内部类,通过继承来实现是不可能的了,不过,再牛的内部类,也难不倒反射!我们在Member栏中找到Clear方法,不出所料,这就是一键清理控制台的方法了。
在这里插入图片描述
万事俱备,只欠代码了!唰唰唰,我们三行搞定今天的任务:

        private static void ClearConsole()
        {
            Type logEntries = GetTypeInEditorAssemblies("UnityEditor.LogEntries");
            MethodInfo clearMethod = logEntries.GetMethod("Clear", BindingFlags.Static | BindingFlags.Public);
            clearMethod.Invoke(null, null);
        }

接下来,把这个方法加入到编辑器菜单,并定制快捷键就完工了,当然,框架中已经完成了这个功能。
在这里插入图片描述
结语:在一般情况下,即使有反编译工具,能够获取到源代码,但也无法改写,所以如果只是用于反射,程序集查看器将是一个不错的工具。

自定义执行器 Custom Executer

CustomExecuter可以在编辑器模式或运行模式,执行任何自定义操作,而无需触发Unity编辑器的编译。

打开执行器

在这里插入图片描述

动态执行

Namespace栏为动态代码引用的命名空间。
Assembly栏为动态代码引用的程序集。
Code栏输入需要执行的代码,直接点击下方的Execute按钮便可以执行,此过程不会触发Unity编辑器的编译,也就是说即便在运行时也可以使用(因为触发Unity编辑器的编译时,会导致大量托管对象被销毁,从而程序必须重新运行)。
在这里插入图片描述
我们点击Execute按钮执行,控制台输出:
在这里插入图片描述
我们可以在运行时输入各种复杂但正确的代码:
在这里插入图片描述
我们点击Execute按钮执行,控制台输出:
在这里插入图片描述

静态执行

静态执行比较简单,也即是呼叫指定实体上的指定组件的指定方法。
Entity为执行的实体。
Target为执行的目标组件。
Method为呼叫的方法。
Parameters为传入的实参列表。
在这里插入图片描述
例:我们手动呼叫Player实体的Find方法,查找其是否存在名为Hand的子物体。
在这里插入图片描述
我们点击Execute按钮执行,控制台输出:
在这里插入图片描述
控制台会打印本次呼叫的结果,返回值为null,可知Player物体并不存在名为Hand的子物体。

结语:Custom Executer是一个不错的工具,优点显而易见:它不需要经过Unity编辑器的编译就可以执行你需要的任何逻辑!但缺点也不容忽视:几乎没有代码高亮及提示!只能说这是一次不容错过的锻炼纯手打能力的机会!

框架实用特性

请参阅框架实用特性

猜你喜欢

转载自blog.csdn.net/qq992817263/article/details/102971712
今日推荐