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

上一篇我们对系统的Attributes进行了MSIL代码的查看,了解到了其本质就是一个类的构造函数.本章我们将编写自己的Attributes. 首先我们定义书的属性代码,如下: [AttributeUsage(AttributeTargets.Field | AttributeTargets.Class, AllowMultiple = true, Inherited = false)] class BookAttribute : Attribute { private string bookN…
本章我们将依然讲解Unity中的Attribute,继续命名空间在UnityEngine里的. PropertyAttribute,这个特性主要来控制变量或者类在Inspector里面的显示方式.和PropertyDrawer类挂钩,具体用法我将在之后开一系列讲解UnityEditor的文章中讲解. Range,这个特性很好理解.给值类型一个范围, 代码如下: 在监视面板里,我们将会看到10的初始值,只要一动滑条,你的值就被限制在0-2之间了. RequireComponent,自动添加所需的c…
今天主要来讲一下Unity中带Menu的Attribute. 首先是AddComponentMenu.这是UnityEngine命名空间下的一个Attribute. 按照官方文档的说法,会在Component的菜单下面生成对应的菜单栏.选择预制或者GameObject,再点击菜单项,自动添加该Component. 下面我们来试试,我在Editor文件夹下面新建了一个OhGod.cs的文件,取完名字我就后悔了,于是我修改了类名,代码如下: 完美!我们来看看Component菜单...什么也没有多!…
本篇我们将逐一讲解Unity中经常使用的Attribute(Unity对应的文档版本为2018.1b). 首先是Serializable,SerializeField以及NonSerialized,HideInInspector. unity中默认public的变量都是可以序列化的,如: 为变量y加上可序列化的标识 可以看到离这个Attribute最近的私有变量被成功序列化. 我们去查看官方文档,是这么写的: SerializeField将会强制去序列化一个私有域,但你将永远用不到它.这个序列化…
本文将重点对Unity剩下常用的Attribute进行讲解,其他不常用的Attribute各位可以自行去官方文档查阅. 首先是UnityEngine命名空间下的. ColorUsage,这个主要作用于Inspector面板的颜色区域,代码使用如下: 构造函数有两个,一个只需要填入是否显示Alpha值即可,如果选择false,在Inspector面板将看不到alpha通道选择. 后面的亮度和曝光度大小取决于hdr是否为true.hdr开启后具体怎么样,各位可以自行去了解,我实在是不知道-_-. C…
首先来看一下微软官方对Attributes(C#)的定义: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/attributes/index Attributes provide a powerful method of associating metadata, or declarative information, with code (assemblies, types, methods,…
本文将讲一下在UnityEditor命名空间下的一些特性. CallBackOrder,这个Attribute是所有带callback index的Attribute的基类,由于官方也没有给出详细的说明,因此这里暂略. PreferenceItem,这个特性是在Preference界面新加一个选项.以官方代码为例: 注意,这段代码我们放在了一个普通类中,并没有继承自Monobehaviour,其实继不继承都可以,但方法必须是静态方法. 我们在Editor里面选择Preference菜单,可以看到…
上一篇文章我们初步了解了一下Attributes的含义,并且使用系统自带的Attributes写了点代码.在进一步解剖我们的代码之前,我觉得有个概念可能需要巩固一下:什么是元数据? 我们知道C#代码会被转成MSIL中间语言,而在IL中,程序集的元数据(Metadata)是指以文本的形式保存的该程序集里所有命名空间,类,类中的成员等等.我们可以使用反射的技术把元数据读取出来,还原成IL中代码的树状图.通过反编译,能够基本上还原出代码原来的样子. 如果英文够好的话,可以看看StackOverFlow…
Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-defined custom information with a target element. A target element can be an assembly, class, constructor, delegate, enum, event field,interface, method,…
game_root节点下右一个Cube子节点,和一个Sphere节点,脚本挂载在game_root下 四元数:(1)Quaternion rot (2)this.cube.rotation 欧拉角:Vector3类型的数据 Vector3的x,y,z是按照Unity的坐标系的顺序,所以不能像数学里面,把Unity的z当成了y,Unity的y当成了z. 一.使用欧拉角做旋转(欧拉角) private Transform cube; void Start () { this.cube = this.…