TODO Unity中的各种Attribute


修饰类


RequireComponent

在添加此脚本时,需要已经存在的其它脚本;不存在直接添加。

[RequireComponent(typeof(Rigidbody))]
public class Test : MonoBehaviour
{
}

CreateAssetMenuAttribute

添加菜单项到Create菜单,通常用来创建自定义的ScriptableObject。

[CreateAssetMenu(fileName="sceneData.asset",menuName="Scene Data")]
public class SceneData : ScriptableObject
{
    public int ID;

    public string Name;

    public Vector3[] BornPoint;
}

AddComponentMenu

修饰MonoBehaviour,添加菜单项到AddComponent菜单,可以将一些自定义的组件添加进来,方便策划人员添加组件。

[AddComponentMenu("Motion/StraightMove")]
public class StraightMove : MonoBehaviour {

    public float speed;

    void Start () {

    }   
    void Update () {

    }
}

DisallowMultipleComponent

修饰MonoBehaviour,当前gameObject上只能添加一个此脚本。

[DisallowMultipleComponent]
public class Test : MonoBehaviour
{
}

手动添加时,会弹出以下窗口

实际测试,在代码中再次添加这个脚本,也不会成功,会在Console提示信息,同时AddComponent返回的对象为null。

ExecuteInEditMode

修饰MonoBehaviour,使脚本在场景没有Play,部分事件方法也可以运行。

  • Awake
  • Update 只有场景中的东西被修改时,才会执行。
  • OnGUI 通过事件的方式判断具体操作
  • OnRenderObject

https://docs.unity3d.com/560/Documentation/ScriptReference/ExecuteInEditMode.html

PreferBinarySerialization

ScriptObject使用二进制序列化,以提升读写性能,但源文件变得不可读,同时版本控制中不能merge。

[PreferBinarySerialization]
public class MyData : ScriptableObject
{
  public float[] lotsOfFloatData = new[] { 1f, 2f, 3f };
  public byte[] lotsOfByteData = new byte[] { 4, 5, 6 };
}

SharedBetweenAnimators

修饰StateMachineBehaviour,指定此脚本在多个Stage中共用。


ImageEffect


ImageEffectAllowedInSceneView

屏幕特效在Scene相机也具有ImageEffect

ImageEffectOpaque

指定ImageEffect在Opaque之后,但在Transparent之后渲染


修饰字段


Multiline

字符串多行显示

[Multiline(4)]
public string Description;

TextArea

带滚动条的文本编辑框

[TextArea]
public string Description;
image.png

Range

设置int, float的数值范围,以滑块的方式显示。

[Range(0,1)]
public float alpha;

Tooltip

[Tooltip("Health value between 0 and 100.")]
public int health = 0;
image.png

SerializeField

让私有的字段也可以在Inspector中编辑

[SerializeField]
private int gold;

https://docs.unity3d.com/560/Documentation/ScriptReference/SerializeField.html

ColorUsageAttribute

修饰Color字段,用来设置颜色选择器的一些属性,是否显示Alpha,最大亮度,最小亮度等等。

[ColorUsage(true)]
public Color col;

ContextMenuItem

修饰字段,在Inspector中在字段名上右键,弹出菜单,点击会执行设置的方法。

[ContextMenuItem("AddMr.", "AddMr")]
public string Name = "";

public void AddMr()
{
    Name = "Mr. " + Name;
}

Delayed

修饰基本类型字段,只有在焦点移除或按了回车,更改才会生效。国为正常情况下,在Inspector中修改了字段,就立马生效了,有时候希望只有确定后才生效。

[Delayed]
public string Name = "";

可以在Update中打印Name的值,只有按回车后,或焦点移除后,Name的值才会更新。

Header

设置字段在Inspector上显示的分组名字

public string name;

[Header("HP setting")]
public int hp;
public int maxHP;

[Header("Money Setting")]
public int diamond;
public int gold;

Space

字段间分隔几行

public string Name;
[Space(50)]
public int Age;

HideInInspector

在Inspector中隐藏某个字段,避免公共的字段被修改

[[HideInInspector]
public int p = 5;

修饰方法


ContextMenu

修饰MonoBehaviour的非静态方法,在Inspector面板中脚本上右键,弹出的菜单中,添加菜单项,用来触发这个方法。

[ContextMenu ("Do Something")]
void DoSomething()
{
    Debug.Log ("Do");
}
image.png

RuntimeInitializeOnLoadMethod

修饰静态方法,当游戏启动后,自动调用此方法。但是启动顺序无法保证。

class MyClass{ 
  [RuntimeInitializeOnLoadMethod] 
  static void OnRuntimeMethodLoad() 
  { 
    Debug.Log("After scene is loaded and game is running"); 
  }
}

RPC

本地远程都存在的RPC方法。

https://docs.unity3d.com/560/Documentation/ScriptReference/AddComponentMenu.html
https://docs.unity3d.com/560/Documentation/ScriptReference/CanEditMultipleObjects.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 原文地址:http://gad.qq.com/program/translateview/7167991 英文版原...
    重装机霸阅读 3,911评论 1 84
  • AddComponentMenu AddComponentMenu属性允许您将脚本放置在“组件”菜单中的任何位置,...
    su9257_海澜阅读 5,225评论 0 15
  • 原文地址 http://www.fx114.net/qa-75-172454.aspx 使用Profiler工具...
    IongX阅读 5,822评论 1 11
  • 一如既往出门,今儿是难得的好天气,无风无云天高气爽,嗅在鼻子里的味道都是清清冽冽,阳光洒过来有点晃得睁不开眼。远处...
    candywater阅读 549评论 0 0
  • 四川东北部,大雪厚厚的积累着,一脚踩下去便能没过脚踝。如盐般铺洒的雪,粉一样粘在我的小腿皮肤上,我痛的直颤抖,很...
    张夏日阅读 685评论 3 13