赞
踩
Untiy开发中经常会使用标签属性(Attribute),比如当使用SctripttableObject做序列化的时候,需要在你想序列化的类前加上[Serializable],但是其中一个变量你又不想它比序列化,你可以在其前面加上[NonSerialized],再比如你想使一个在mono脚本中定义的一个private变量也能在Inspector面板上显示,你可以使用[SerializeField],那么这些特殊的属性字段是如何被区分出来并处理想对应的功能呢。
1. 概念(Attribute是什么?)
直接用代码解释
- public static Class Test
- {
- protected virtual void Print()
- {
-
- }
- }
上面这段代码中,public与 static 就是Test的属性,对于类Test的一个修饰,同理
Protected、virtual、void 是对Print方法的修饰。他们每一种修饰都代表着不同的含义,那么如果我们对一个类或者方法(当前也包括定义的字段与枚举,结构体等等)有特殊的修饰需求,我们怎么自字义一个Attribute。
2. 自定义Attribute的使用方法
- //定义一个修饰类的属性标签
- [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited= true)]
- public class CustomClassAttribute : System.Attribute
- {
- private CustomClassType m
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。