Unity中的Attribute使用总结

Attribute是C#的功能,在Unity中可以使用Attribute来给变量和方法增加新的特性或者功能。


举两个例子,在变量上使用[SerializeFiled]属性,可以强制让变量进行序列化,可以在UnityEditor上进行赋值。
Class上使用[RequireComponent]属性,就会在ClassGameObject上自动追加所需的Component

以下是Unity官网文档中找到的所有Attribute,下面将按照顺序,逐个对这些Attribute进行说明和小的测试。
部分例子使用了Unity官方的示例。

UnityEngine

AddComponentMenu

可以在UnityEditorComponentMenu中增加自定义的项目。菜单可以设置多级,使用斜线/分隔即可。在Hierarchy中选中GameObject的时候,点击该菜单项,就可以在GameObject上追加该Component
例如如下代码可以完成下图的效果。

[AddComponentMenu("TestMenu/TestComponet")]

public class TestMenu : MonoBehaviour {

}

 

AssemblyIsEditorAssembly

汇编级属性,使用该属性的Class会被认为是EditorClass。具体用法不明。

ContextMenu

可以在InspectorContextMenu中增加选项。
例如,如下代码的效果

public class TestMenu : MonoBehaviour {

    [ContextMenu ("Do Something")]

    void DoSomething () {

        Debug.Log ("Perform operation");

    }

}

 

ContextMenuItemAttribute

这个属性是Unity4.5之后提供的新功能,可以在Inspector上面对变量追加一个右键菜单,并执行指定的函数。
例子:

public class Sample : MonoBehaviour {

    [ContextMenuItem("Reset", "ResetName")]

    public string name = "Default";

    void ResetName() {

        name = "Default";

    }

}

 

DisallowMultipleComponent

对一个MonoBehaviour的子类使用这个属性,那么在同一个GameObject上面,最多只能添加一个该Class的实例。
尝试添加多个的时候,会出现下面的提示。

ExecuteInEditMode

默认状态下,MonoBehavior中的StartUpdateOnGUI等方法,需要在Play的状态下才会被执行。
这个属性让ClassEditor模式(非Play模式)下也能执行。
但是与Play模式也有一些区别。
例如:
Update方法只在Scene编辑器中有物体产生变化时,才会被调用。
OnGUI方法只在GameView接收到事件时,才会被调用。

HeaderAttribute

这个属性可以在Inspector中变量的上面增加Header
例子:

public class ExampleClass : MonoBehaviour {

    [Header("生命值")]

    public int CurrentHP = 0;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值