在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
使用 Unity 的C#语言 ,利用属性(Attribute)来类定义和变量定义或区分其他的变量,您可以设置一种特殊行为 例如,您添加[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;
·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;
·HideInInspector 这种public序列化字段从Inspector检查器隐藏。如果隐藏的参数、扩展的编辑器中内置的参数和引用关系。 请注意不能从检查器编辑,HideInInspector 用于构建unity场景隐藏一个序列化的值,当声明一个字段变量初始化也将忽略。 使用NonSerializable的序列化和HideInInspector。 [HideInInspector] public int count8; ·NonSerializable 序列化并不妨碍您将从检查器中消失。 [System.NonSerialized] public int count9;
·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(){ }
影响游戏的行为的属性 ·RPC 在执行 RPC 时,它使用。用于在 NetworkView 中的光子与沟通。此属性是跨网络调用方法。 [RPC] void Damage(){ }
·ImageEffectTransformsToLDR 似乎转换HDR和 LDR 。如何使用未知。 ·ImageEffectOpaque 使 OnRenderImage 透明呈现。 [ImageEffectOpaque] void OnRenderImage(RenderTexture source, RenderTexture destination){ }
·MonoPInvokeCallbackAttribute C#(托管代码) 中注册方法可以从c + +(非托管代码) 调用。
·DLLImport C + +(非托管代码) 的方法可从c#调用。 [DllImport("DLLName")] private static extern void MethodName();
用编辑器的行为相关联的属性 是可以影响的场景从编辑器的顶部的属性。 ·AddComponentMenu 设置路径,当指定 AddComponent 按钮和菜单栏构件。如果你不做你的Script /Namespace 和组件的名称。 [AddComponentMenu("Sample/TestCode")] public class AttributeSample: MonoBehaviour{ }
·ExecuteInEditMode 状态不玩游戏等组件事件更新并开始工作。用来验证是否要工作在运行时的行为。 [ExecuteInEditMode] public classAttributeSample : MonoBehaviour {} ExecuteInEditMode操作热点像代码更改为序列化的形式可以是值是序列化→→汇编和注射,不能破坏价值和可能。正因为如此,注意力是需要,因为需要发挥出来的场景将取决于静态代码或初始化开始等...... 例如是前 3 名,代码更改和运行编译下面的代码的代码更改,并打印 0。 static int sCount = 0; void Start(){ sCount = 3; } void Update(){ Debug.Log("export:" + sCount); }
·SelectionBaseAttribute 选择您选择在场景视图中使用此属性的组件。 [SelectionBase] public class AttributeSample :MonoBehaviour {} 例如授予的授予对父对象的渲染器模型的SelectionBaseAttribute 选定在场景视图的模型时,选择场景视图组件所选的父对象上,当你选择时。
是到游戏对象的 SelectionBase对象,如果不是根据行为给予的批。格兰特获取未授予一个球体,但游戏物体的对象
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论