(1)[Header()]---在Inspector面板中,为field字段添加头信息,增强描述。【string类型】
(2)[Space()]或者[Space(10)]----间隔距离,在Inspector中,可以设置元素与元素之间的间隔。【可以加数字】
(3)[Multiline()]或者[Multiline(4)]----在一个支持多行的文本区域内编辑string字符串,他和TextAreaAttribute不同,MultilineAttribute的TextArea没有滚动条。
(4)[TextArea()]或者[TextArea(10,4)]----可以在一个高自由度并且可滚动的文本区域里编辑string字符串,如果字符串比较长,比较适用。minLines:文本区域最小行数.maxLines:文本区域最大行数,超过最大行数,会出现滚动条。【值可以不填,自己调整相应的行数,形成滚轮状态】
(5)[Range(“XXX”)][float/int]---当在int或float上应用RangeAttribute特性时,在Inspector面板中,显示的将是一个slider滑动条,而不是默认的数值字段;(用于字段)
(6)[Tooltip()]---在Inspector面板中,为一个字段Field指定一个提示【Tooltip里面是string类型】;(用于字段)
(7)[ColorUsage(true,true)]第一个参数false表示不能调整Alpha透明度,true则是允许调整透明度 第二个参数为false是表示不能使用HDR,true则是允许使用HDR模式,使用在类内部
(8)[HideInInspector()]---让一个可被序列化的字段,不要显示在Inspector面板中,防止修改【即Public类型】;(用于字段)
(9)[SerializeField]----强制去序列化一个私有的字段,使私有字段也可以显示在Inspector窗口中。(用于字段)
(10)[System.NonSerialized]防止unity序列化public变量
(11)[FormerlySerializedAs(“所要保护的字段”)]-----(要使用重命名之前的名字)作用是在对某一个字段重命名时,会导致字段内的数据清空,所以使用这个FormerlySerializedAs()可以保证字段赋予的数据不会被重置,但是需要使用using UnityEngine.Serialization;引用
(12)[System.Serializable]------将一个类转化成可序列化即可见的类
(13)ExecuteInEditMode()----让MonoBehaviour脚本的所有实例,在编辑模式下可运行。这些函数的调用并不会像在PlayMode下那样:只有窗口在发生改变 ,接触新的事件,重绘后才会调用;---非常重要【可以在编辑模式执行】
(14)[AddComponentMenu()]----自定义添加组件【放在类之上】
(15)[DisallowMultipleComponent()]----禁止一个组件被重复的添加多次()
(16)[RequireComponent(tyeof())]---自动添加所要依赖的组件,如将一个Script做为一个GameObject的组件,而这个Script需要访问Rigidbody组件,通过应用该属性,可以自动的添加Rigidbody组件到当前的GameObject中,避免设置错误。【重新挂载后生效并且应用在类上不是字段或者方法上】;(用于字段)
(17)[DefaultExecutionOrder(100)]用于设置脚本的执行顺序来调整这些方法的执行
(18)[SelectionBase()]---作用在组合型物体身上,将脚本挂载在起父物体身上,可以方便点击找到组合型中父物体
(19)[CustomEditor(typeof(LookAtPoint))]可以针对LookAtPoint自定义InSpector窗口
(20)[ContextMenu(“TakeDamage”)]----向Inspector面板中脚本Script的上下文菜单(快捷,右键),添加一条指令,当选择该命令时,函数会执行。*只能用于非静态函数
(21)[System.Obsolete("表达信息")]--表示方法过时来通知相关提示信息
(22)ContextMenuItem-----在Inspector面板中,为字段field添加一个快捷的菜单。
[Multiline]
[ContextMenuItem("Reset", "ResetString")]
public stringabc;
public voidResetString()
{
abc ="";
}
(23)[UnityEditor.MenuItem(“Tool/Give
Sword/Do it”)]可以在Tool工具栏中调用静态函数,适合游戏开发
(24)[CreateAssetMenu]-----快速的创建ScriptableObject派生类的实例,并存储成以“.asset"结尾的文件,ScriptableObject的派生类可以存储为外部的文件,图形化编辑对象数据,一些静态的数据,动态的加载,ScriptableObject是一种解决方案
fileName:生成asset文件的文件名。menuName:在Assets/Create上子菜单的名字。Order:是按钮显示的顺序,需要继承ScriptableObject,
例如:[CreateAssetMenu(fileName="Bullect",menuName ="New Bullect",order =0)]
(21)[OnOpenAsset()]-----用于在Unity中打开资产的回调属性将这个属性添加到静态方法中将使Unity即将打开资产时调用该方法。该方法应具有以下签名之一:需要调用【using UnityEditor;using
UnityEditor.Callbacks;】static bool
OnOpenAsset(int instanceID, int line)static bool OnOpenAsset(int
instanceID, int line, int column)如果您处理了资产的开放,则返回true;如果外部工具应将其打开,则返回false。
例如:
[OnOpenAssetAttribute(1)]
public staticbool step1(int instanceID, int line)
{
string name= EditorUtility.InstanceIDToObject(instanceID).name;
Debug.Log("Open Asset step: 1 (" + name + ")");
returnfalse; //我们没有处理公开
}
// step2具有索引为2的属性,因此将在step1之后调用
//OnOpenAsset是执行顺序
//获取instanceID需要在Inspector右上角选择debug
[OnOpenAssetAttribute(2)]
public staticbool step2(int instanceID, int line)
{
Debug.Log("Open Asset step: 2 (" + instanceID +")");
returnfalse; // we did not handle the open
}