【马马虎虎系列】Unity的attributes大集合(1)

来源:互联网 发布:淘宝美工课程介绍 编辑:程序博客网 时间:2024/05/18 02:46

其实写这篇文章是因为读了老外的一篇文章
老外的文章是对Unity官方参考文档的一个归纳
我这篇文章就是对归纳做一个补充说明……
Unity中有很多attributes,如果你序列化过一个字段,那你肯定用过SerializeField,如果你扩展过编辑器,你很可能已经接触到RequireComponent
但是除了这些常见的,Unity还提供了其他一些在我看来很实用的attribute,下面是我做实际测试过的一些,当做是一个补充说明。
就按照老外文章的顺序来吧。

检视面板相关

现在的大部分文章,都在讲通过单独写一个类继承Editor来自定义检视面板,这样做肯定没有错,但是其实一部分功能完全可以通过下面这些attribute实现。

  • [ToolTip(“我是描述”)]
    有时候在检视面板中看到一个字段,在你鼠标停留在上面一段时间,或者光标输入字段值的时候,会弹出一段文字对这个字段进行描述。
    tooltip示例
    我们的自定义类也可以有这样的文字描述,只要在字段上加上[ToolTip(“……”)]就可以。不过如果写中文的话,因为默认字体非常小,所以看得不是很清楚。
  • [Space(10)]
    在检视面板中被这个属性描述的字段,在它的上面会空出指定像素的空行,其实和EditorGUILayout.Space以及GUILayout.Space差不多。测试10像素效果就不错。
  • [Header(“Health Settings”)]
    会在字段上方显示一个标题,非常好使。截个图。
    header
    Header会自动排版增加一行空行,所以没必要额外写Space了。
  • [Range(0,10)]
    会将字段的值限制在指定的范围内,比如上面就是限制在0-10,并且检视面板会变成一个滑动条的形式。
    Range
  • [Multiline]
    标记string字段在检视面板里显示多行。默认是3行,也可以填入一个表示行数的参数。
    Multiline
  • [TextArea(1,5)]
    和Multiline很像,但是可以指定最小行数和最大行数,如果内容超过最大行数,会出现滚动条。
  • [HideInInspector]
    和字面意思一样,会在检视面板隐藏这个字段
  • [SerializeField]
    用这个attribute修饰的字段,会被序列化,关于序列化的详细内容可以参考官方文档。它也会在检视面板中看到,即使是private或者protected的变量也一样。
  • [FormerlySerializedAs(“oldName”)]
    在unity里,当一个序列化字段修改了名称,默认的该字段的序列化字段会丢失,如果结构不复杂,丢了无非是重新指定一次,但是如果序列化的数据结构很复杂,或者非常多,可以使用FormerlySerializedAs,参数是之前的字段名,这样可以起到既改名又保留了数据的作用。

和检视面板相关的特性就介绍到这里,其实官方还有更详细的描述,下一篇会介绍菜单和运行时相关的特性。

0 0
原创粉丝点击