【Unity】Attribute使用归纳

【参考原文】利用unity3d属性来设置Inspector面板的特殊行为

使用 Unity 的C#语言 ,利用属性(Attribute)来类定义和变量定义或区分其他的变量,您可以设置一种特殊行为。* 1
例如,您添加[SerializeField]属性变量,私有变量标识序列化。
[SerializeField]
int 计数;
这里写图片描述
序列化您’的值是存储到场景和预制体。因为值存储在meta元数据中,在Inspector检查器中设置的值。
你还可以强制指定的组件,对象要被附加组件,您将添加[RequireComponent] * 2 * 3 。
[RequireComponent(typeof(Rigidbody))]
public classAttributeSample : MonoBehaviour {
}
你可以使用属性时,设置特殊的变量命名约定以外的其他行为。unity使用属性,设置特约编辑和方法的行为。

规则属性

属性放置在[below. * * ]的窗体变量和类定义之前。如果你想要设置多个属性,以逗号分隔 [ * * . * * *]的写入操作。
例如,如果您想要设置的 SerializeField 和范围,如描述属性。
[SerializeField, Range(0, 5)]
int count;
这里写图片描述
属性适用于立即定义的所有变量。例如,如果在一个声明中定义多个变量
[SerializeField, Range(0,5)]
int count3, count4;
这里写图片描述
以及适合数组,是适用于所有的变量,使其包含。
[SerializeField, Range(0,5)]
int[] counts;
这里写图片描述

统一标准属性

要扩展Inspector检查器属性
扩展的Inspector检查器行为选择字段。
- SerializeField
private或protected值的序列化。
如果您想要在场景视图中进行编辑,它非常有用。
[SerializeField]
int count;
- HideInInspector
这种public序列化字段从Inspector检查器隐藏。如果隐藏的参数、扩展的编辑器中内置的参数和引用关系。
请注意不能从检查器编辑,HideInInspector 用于构建unity场景隐藏一个序列化的值,当声明一个字段变量初始化也将忽略。
使用NonSerializable的序列化和HideInInspector。
[HideInInspector]
public int count8;
·NonSerializable
序列化并不妨碍您将从检查器中消失。
[System.NonSerialized]
public int count9;
- TooltipAttribute
如果鼠标光标是在字段上,显示的说明文本。
[SerializeField,TooltipAttribute(“説明文”)]
int count5;
这里写图片描述
- SpaceAttribute
设置字段和字段之间的空间。
[SerializeField,Space(15)]
intcount6;
这里写图片描述
- HeaderAttribute
设置标题,就是字段的头部。需要注意,因为标题给予所有项目和将 HeaderAttribute 添加到列表中
[SerializeField,HeaderAttribute (“Title”)]
int count7;
这里写图片描述
- MultilineAttribute
设置多行输入的文本字段。
[SerializeField, MultilineAttribute(2)]
string message1;
这里写图片描述
- TextAreaAttribute
设置多行输入的文本字段。您可以设置的最大值和最小值的行数。
[SerializeField,TextAreaAttribute(2, 5)]
string message2;
这里写图片描述
- FormerlySerializedAs
当您更改该变量的名称,保持信息的修改。
unity保持信息字段字段名称中,字段名称被更改和销毁值。当您可以指定FormerlySerializedAs此信息将被带到目标变量的名称。
public float first;
这里写图片描述
首先,所有的变量first。我试着改变这第二个变量中。并添加 FormerlySerializedAs 属性,原” first “。
[FormerlySerializedAs(“first”)]
public float second;
这里写图片描述
即使您更改中的变量名称的值first在此变量的名称second之后,将保留。如果你在其他场景中使用可迁移要删除 FormerlySerializedAs 和各种的麻烦,请注意。

与组件的行为相关联的属性
  • RequireComponentAttribute
    添加组件的行为附加到对象。例如,刚体等……
    [RequireComponent(typeof(Rigidbody))]
    public classAttributeSample : MonoBehaviour {
    }

  • DisallowMultipleComponent
    不能将几个组件添加到同一个对象(就是不能重复)。
    [DisallowMultipleComponent]
    public classAttributeSample : MonoBehaviour {
    }

  • ContextMenuAttribute
    我想要从组件的上下文菜单(单击右键)调用方法。例如,如果您在运行时做不被动设置很有用。
    [ContextMenu(“Init”)]
    void Init(){
    }
    这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值