C#特性Attribute(一)

声明:我是一只还没入行的Unity菜鸡 博客主要用途是做学习总结 大佬们路过看到错的欢迎来指点一下!

C#特性

1.了解什么是特性

attributes 是一种可由用户自定义的修饰符 可以用来修饰各种需要被修饰的目标,我们可以对类、以及C#程序集中的成员进行进一步的描述

简单来说就是 Attribute想是一种“附着物” 为附着目标提供一些额外的信息

先来看看msdn对特性的描述

C#特性Attribute(一)_第1张图片

说实话目前我这个水平真把我看蒙圈了

我们再来看看Unity对特性的描述

C#特性Attribute(一)_第2张图片

还给出了个案例 让我们了解啥是特性
我们直接来操作下

我们知道在脚本中标记为public的变量会自动进行序列化并显示在Inspector面板上 如果我们想这个是公开的但是不想让他显示在面板上 这个时候我们可以在GameName的头上加上[HideInInspector]

C#特性Attribute(一)_第3张图片

[HideInInspector]:只是隐藏变量在监视板里,不改变序列化属性

加上[HideInInspector]之后 GameName就不会出现在Inspector面板上了

image.png

(使用[HideInInspector]特性的效果)

C#特性Attribute(一)_第4张图片

(不使用[HideInInspector]特性的效果)

2.特性与注释的区别

要注意的是特性不同于注释
注释是对程序源代码的一种说明,主要的目的是给人看的,程序编译的时候会忽略它 它不会影响我们程序的执行,而特性是代码的一部分 它会被编译器编译进程序集的元数据里,在程序运行的时候,你随时可以从元数据中提取出这些附加信息。

现在 应该 大概 了解什么是特性了吧
那么我们就来学习一下几个最常用的特性吧~

3.几个常用特性介绍

[Obsolete]

这个特性估计大伙都不陌生吧,我们经常能看到的 它标明方法已经弃用了

C#特性Attribute(一)_第5张图片

[Header]

标题特性 为变量在Inspector加一个小标题

C#特性Attribute(一)_第6张图片
image.png

[HideInInspector]

只是隐藏变量在Inspector面板里,不改变序列化属性

上面已经演示过一遍了

C#特性Attribute(一)_第7张图片
image.png

[SerializeField]

和[HideInInspector]相反 用于序列化字段 主要用于序列化私有字段中
C#特性Attribute(一)_第8张图片
image.png

[Tooltip]

为Inspector上的字段添加一个小贴士 鼠标移到字段自动显示提示

C#特性Attribute(一)_第9张图片
image.png

就先介绍这几个吧 因为C#提供了~~~~太多的特性了并且还支持用户自定义特性 这个要自己慢慢自己去摸索

这里有为大佬总结了一份Unity特性总览 大家可以学习学习

Unity 特性(Attribute)总览_l773575310的博客-CSDN博客_unity 特性

最后

特性这个坑也挺大的 我也是才开始学习,还有很多坑要自己慢慢踩,之后Get到了什么新的知识点会继续回来做笔记的!

你可能感兴趣的:(unity3d)