Unity中常用的特性
官网链接(https://docs.unity3d.com/ScriptReference/AddComponentMenu.html)
AddComponentMenu
规划自己的脚本,Unity里所有的脚本在界面Component的Scripts里可以找到,为避免开发者在Project里面去找,同时可以划分不同人猿之间写的代码,这个特性可以把在Script里面的脚本规划到自己的组别中,如图:
Obsolete
经常使用UnityAPI时发现有过时的方法,接口,就是这个特性给与的提示,示例:
这里有两个参数,第一个是提示的信息(你可以写这个方法的替代方法),第二个是报错类型,false代表警告类型呈现绿色的线,true表示代表错误类型,呈现红色的线
Conditional
这个特性用来代替条件编译# if,其执行依赖于指定的预处理标识符
#define DEBUG
public class Send
{
[Conditional("DEBUG")]
public static void Message(string msg)
{
Console.WriteLine(msg);
}
}
ContextMenu
在某个方法上面注明,用于Unity 在还没有运行时单独测试某个方法
即使Unity在未在Run状态下,点击Execute就会单独执行这个方法。
RuntimeInitializeOnLoadMethodAttribute
在程序运行时会自动执行这个方法,类不用继承mono,方法是static的:
SpaceAttribute
使用该属性可以在Inspector上增加一些空位
TextAreaAttribute
该属性可以把string在Inspector上的编辑区变成一个TextArea, 但只能对string关键字定义的属性使用
ContextMenuItemAttribute
在变量上面使用这个特性,Unity的Inspector界面当鼠标指针在这个变量上面时会出现一个菜单,可以执行一个方法,跟ContextMenu的区别是这个方法是在字段上面的,而ContextMenu是在方法上面的
HelpURLAttribute
在类上面添加这个特性,并且填上需要连接的网址
RequireComponent
需求组件,挂上这个脚本会自动添加需要的组件,这个还是会经常用到的
SerializeField和HideInInspector
序列化:将任何对象转变成底层数据,大致是任何对象(Object型)---->数据流---->二进制数据,但在Unity的里一个作用是可以在Unity的界面将数据展示出来,其中public类型是默认序列化的,如果想让private的数据展现出来,你可以用这个特性,如果你想序列化一个数据但又不想让数据在Inspector界面展现,你可以同时使用这两个特性,HideInInspector的作用就是隐藏你的数据,比如[HideInInspector]public int num;这个数据在界面是不可见的
其他
还有一些比较复杂的(AssemblyIsEditorAssembly),限定类(Range)的或者提示性质(TooltipAttribute之类的)的特性可以参考官方文档。
好吧,其实AssemblyIsEditorAssembly我是不知道怎么使用。。。