Unity Attribute基本特性:

(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

    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。