从Unity中的Attribute到AOP(八)
本文将讲一下在UnityEditor命名空间下的一些特性。
CallBackOrder,这个Attribute是所有带callback index的Attribute的基类,由于官方也没有给出详细的说明,因此这里暂略。
PreferenceItem,这个特性是在Preference界面新加一个选项。以官方代码为例:

注意,这段代码我们放在了一个普通类中,并没有继承自Monobehaviour,其实继不继承都可以,但方法必须是静态方法。
我们在Editor里面选择Preference菜单,可以看到:

ShaderIncludePath,这个特性是2018.1b版本新加的特性。
当我们尝试些一个shader库的时候,会经常需要include一些存在任意位置的文件,这个特性允许你返回一些列的shader include路径。查看官方代码:
internal static class DefaultShaderIncludes
{
[ShaderIncludePath]
public static string[] GetPaths()
{
return new[]
{
"Assets/ScriptableRenderPipeline/",
"Assets/SRP/ScriptableRenderPipeline/LightweightPipeline/Shaders"
};
}
}
DrawGizmo属性允许你为任何一个Component提供一个gizmo渲染器。渲染器的函数必须是静态的,并且需要两个参数:正在绘制的Gizmo的对象,以及指示正在绘制Gizmo的GizmoType。
渲染器的函数可以在任意的函数内,包括Editor文件,这样你不必放在组件脚本中,也不会被包含在工程中。
新建代码如下:

注意Test并没有从Mono继承过来,而这个Attribute有一个可选参数。
在场景中我们新建一个空GO,如图:

默认选中是什么也没有的,把Test脚本中指定ComponentTest的添加到GO上,再次选中,则可以看到:

可以根据自己的具体情况来绘制,具体绘制参考Gizmos类。
InitializeOnLoad和InitializeOnLoadMethod这两个特性功能类似,都是在Unity启动时候可以执行一系列操作,这个操作主要针对编辑器。
写了以下代码:

注意构造函数必须为静态的。当Unity启动的时候,会自动运行今天运行里面的内容。同时我们也可以指定一些编辑器里的其他操作。如:

这样,编辑器里会不停地输出。每次修改完代码,编辑器会重新执行一次Test构造函数。

第二个Attribute则是作用于静态函数之上。功能类似。
关于CustomEditor,CanEditMultipleObjects,CustomPreview,CustomPorpertyDrawer之后会在关于Editor扩展中进行讲解。
从Unity中的Attribute到AOP(八)的更多相关文章
- 从Unity中的Attribute到AOP(七)
本章我们将依然讲解Unity中的Attribute,继续命名空间在UnityEngine里的. PropertyAttribute,这个特性主要来控制变量或者类在Inspector里面的显示方式.和P ...
- 从Unity中的Attribute到AOP(五)
今天主要来讲一下Unity中带Menu的Attribute. 首先是AddComponentMenu.这是UnityEngine命名空间下的一个Attribute. 按照官方文档的说法,会在Compo ...
- 从Unity中的Attribute到AOP(四)
本篇我们将逐一讲解Unity中经常使用的Attribute(Unity对应的文档版本为2018.1b). 首先是Serializable,SerializeField以及NonSerialized,H ...
- 从Unity中的Attribute到AOP(三)
上一篇我们对系统的Attributes进行了MSIL代码的查看,了解到了其本质就是一个类的构造函数.本章我们将编写自己的Attributes. 首先我们定义书的属性代码,如下: [AttributeU ...
- 从Unity中的Attribute到AOP(六)
本文将重点对Unity剩下常用的Attribute进行讲解,其他不常用的Attribute各位可以自行去官方文档查阅. 首先是UnityEngine命名空间下的. ColorUsage,这个主要作用于 ...
- 从Unity中的Attribute到AOP(二)
上一篇文章我们初步了解了一下Attributes的含义,并且使用系统自带的Attributes写了点代码.在进一步解剖我们的代码之前,我觉得有个概念可能需要巩固一下:什么是元数据? 我们知道C#代码会 ...
- 从Unity中的Attribute到AOP(一)
首先来看一下微软官方对Attributes(C#)的定义: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/conce ...
- Unity中使用Attribute
Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-def ...
- Unity应用架构设计(12)——AOP思想的实践
想象一下,当程序所有的业务逻辑都完成的时候,你可能还来不及喘口气,紧张的测试即将来临.你的Boss告诉你,虽然程序没问题,但某些方法为什么执行这么慢,性能堪忧.领会了Boss的意图之后,漫长的排查问题 ...
随机推荐
- pcre和正则表达式的误点
1.正则中所有的匹配模式,都应该理解为"匹配了某字符或字符串后,紧跟着再匹配".这个概念很重要. 2.中括号首部使用脱字符时,表示的是紧跟着匹配不含给定字符的字符,而不是允许不匹配 ...
- presto
presto中文站:http://prestodb-china.com/ 进入hadoop机器,进入presto所在bin目录:presto --server localhost:9090 --cat ...
- ES6字符串方法
ES6字符串提供三个函数确定一个字符串是否包含在另一个字符串中,分别是includes().startsWith().endsWith(),这三种方法都返回一个布尔值. includes()方法表示是 ...
- Keras的安装与配置
Keras是由Python编写的基于Tensorflow或Theano的一个高层神经网络API.具有高度模块化,极简,可扩充等特性.能够实现简易和快速的原型设计,支持CNN和RNN或者两者的结合,可以 ...
- [array] leetcode - 33. Search in Rotated Sorted Array - Medium
leetcode - 33. Search in Rotated Sorted Array - Medium descrition Suppose an array sorted in ascendi ...
- 10本Java书籍推荐
1. <深入理解Java虚拟机>是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中 ...
- @Data 注解引出的 lombok 小辣椒
今天在看代码的时候, 看到了这个注解, 之前都没有见过, 所以就查了下, 发现还是个不错的注解, 可以让代码更加简洁. 这个注解来自于 lombok,lombok 能够减少大量的模板代码,减少了在使用 ...
- bzoj 4515: [Sdoi2016]游戏
Description Alice 和 Bob 在玩一个游戏. 游戏在一棵有 n 个点的树上进行.最初,每个点上都只有一个数字,那个数字是 123456789123456789. 有时,Alice 会 ...
- 尤克里里 ukulele 单板 非kaka tom uma
本店冲人气优惠,不搞倒闭之类的事 23寸尤克里里 单板 单板 单板 彩贝镶边演出大气 单板 单板 单板 彩贝镶边演出大气 单板 单板 单板 彩贝镶边演出大气 配件选购40元全套(加棉琴包.金属变调夹. ...
- SLAM入门之视觉里程计(4):基础矩阵的估计
在上篇文章中,介绍了三位场景中的同一个三维点在不同视角下的像点存在着一种约束关系:对极约束,基础矩阵是这种约束关系的代数表示,并且这种约束关系独立与场景的结构,只依赖与相机的内参和外参(相对位姿).这 ...