本文将讲一下在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类。

InitializeOnLoadInitializeOnLoadMethod这两个特性功能类似,都是在Unity启动时候可以执行一系列操作,这个操作主要针对编辑器。

写了以下代码:

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

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

第二个Attribute则是作用于静态函数之上。功能类似。

关于CustomEditorCanEditMultipleObjectsCustomPreviewCustomPorpertyDrawer之后会在关于Editor扩展中进行讲解。

从Unity中的Attribute到AOP(八)的更多相关文章

  1. 从Unity中的Attribute到AOP(七)

    本章我们将依然讲解Unity中的Attribute,继续命名空间在UnityEngine里的. PropertyAttribute,这个特性主要来控制变量或者类在Inspector里面的显示方式.和P ...

  2. 从Unity中的Attribute到AOP(五)

    今天主要来讲一下Unity中带Menu的Attribute. 首先是AddComponentMenu.这是UnityEngine命名空间下的一个Attribute. 按照官方文档的说法,会在Compo ...

  3. 从Unity中的Attribute到AOP(四)

    本篇我们将逐一讲解Unity中经常使用的Attribute(Unity对应的文档版本为2018.1b). 首先是Serializable,SerializeField以及NonSerialized,H ...

  4. 从Unity中的Attribute到AOP(三)

    上一篇我们对系统的Attributes进行了MSIL代码的查看,了解到了其本质就是一个类的构造函数.本章我们将编写自己的Attributes. 首先我们定义书的属性代码,如下: [AttributeU ...

  5. 从Unity中的Attribute到AOP(六)

    本文将重点对Unity剩下常用的Attribute进行讲解,其他不常用的Attribute各位可以自行去官方文档查阅. 首先是UnityEngine命名空间下的. ColorUsage,这个主要作用于 ...

  6. 从Unity中的Attribute到AOP(二)

    上一篇文章我们初步了解了一下Attributes的含义,并且使用系统自带的Attributes写了点代码.在进一步解剖我们的代码之前,我觉得有个概念可能需要巩固一下:什么是元数据? 我们知道C#代码会 ...

  7. 从Unity中的Attribute到AOP(一)

    首先来看一下微软官方对Attributes(C#)的定义: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/conce ...

  8. Unity中使用Attribute

    Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-def ...

  9. Unity应用架构设计(12)——AOP思想的实践

    想象一下,当程序所有的业务逻辑都完成的时候,你可能还来不及喘口气,紧张的测试即将来临.你的Boss告诉你,虽然程序没问题,但某些方法为什么执行这么慢,性能堪忧.领会了Boss的意图之后,漫长的排查问题 ...

随机推荐

  1. 优化Webpack构建性能的几点建议

    Webpack 作为目前最流行的前端构建工具之一,在 vue/react 等 Framework 的生态圈中都占据重要地位.在开发现代 Web 应用的过程中,Webpack 和我们的开发过程和发布过程 ...

  2. springboot(十五):springboot+jpa+thymeleaf增删改查示例

    这篇文章介绍如何使用jpa和thymeleaf做一个增删改查的示例. 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭建起一个demo来试试它的效果,越简单越容易上 ...

  3. css盒子模型(3)

    盒子模型 版权声明 本文原创作者:雨点的名字 作者博客地址:https://home.cnblogs.com/u/qdhxhz/      在讲理论之前,我们先要知道网页设计中常听的属性名:内容(co ...

  4. 4. sudo,PATH环境变量,修改字符集,ntpserver,加大文件描述符,隐藏内核版本,锁定关键系统文件

    1   命令:  visudo              98gg      98行             yy           复制当前行             p              ...

  5. JaveScript流程控制(JS知识点归纳四)

    01 流程控制 顺序结构: 程序的默认执行方式 条件判断语句:也称之为分支结构,选择结构:如果程序要执行的代码出现了多种情况需要使用 循环结构:当代码需要多次重复执行多次时,使用 02 条件判断语句 ...

  6. android中的五大布局(控件的容器,可以放button等控件)

    一.android中五大布局相当于是容器,这些容器里可以放控件也可以放另一个容器,子控件和布局都需要制定属性. 1.相对布局:RelativeLayout @1控件默认堆叠排列,需要制定控件的相对位置 ...

  7. Java JTS & 空间数据模型

    空间数据模型 判断两个几何图形是否存在指定的空间关系.包括: 相等(equals).分离(disjoint).相交(intersect).相接(touches).交叉(crosses).包含于(wit ...

  8. caffe CuDNN报错问题解决

    解决cudnn问题:Loaded runtime CuDNN library: 5005 (compatibility version 5000) but source was compiled wi ...

  9. ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集

    上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDat ...

  10. bzoj 3626: [LNOI2014]LCA

    Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q ...