【马马虎虎系列】Unity的attributes大集合(1)
2015-09-11 18:37
323 查看
其实写这篇文章是因为读了老外的一篇文章
老外的文章是对Unity官方参考文档的一个归纳
我这篇文章就是对归纳做一个补充说明……
Unity中有很多attributes,如果你序列化过一个字段,那你肯定用过SerializeField,如果你扩展过编辑器,你很可能已经接触到RequireComponent
但是除了这些常见的,Unity还提供了其他一些在我看来很实用的attribute,下面是我做实际测试过的一些,当做是一个补充说明。
就按照老外文章的顺序来吧。
[ToolTip(“我是描述”)]
有时候在检视面板中看到一个字段,在你鼠标停留在上面一段时间,或者光标输入字段值的时候,会弹出一段文字对这个字段进行描述。
我们的自定义类也可以有这样的文字描述,只要在字段上加上[ToolTip(“……”)]就可以。不过如果写中文的话,因为默认字体非常小,所以看得不是很清楚。
[Space(10)]
在检视面板中被这个属性描述的字段,在它的上面会空出指定像素的空行,其实和EditorGUILayout.Space以及GUILayout.Space差不多。测试10像素效果就不错。
[Header(“Health Settings”)]
会在字段上方显示一个标题,非常好使。截个图。
Header会自动排版增加一行空行,所以没必要额外写Space了。
[Range(0,10)]
会将字段的值限制在指定的范围内,比如上面就是限制在0-10,并且检视面板会变成一个滑动条的形式。
[Multiline]
标记string字段在检视面板里显示多行。默认是3行,也可以填入一个表示行数的参数。
[TextArea(1,5)]
和Multiline很像,但是可以指定最小行数和最大行数,如果内容超过最大行数,会出现滚动条。
[HideInInspector]
和字面意思一样,会在检视面板隐藏这个字段
[SerializeField]
用这个attribute修饰的字段,会被序列化,关于序列化的详细内容可以参考官方文档。它也会在检视面板中看到,即使是private或者protected的变量也一样。
[FormerlySerializedAs(“oldName”)]
在unity里,当一个序列化字段修改了名称,默认的该字段的序列化字段会丢失,如果结构不复杂,丢了无非是重新指定一次,但是如果序列化的数据结构很复杂,或者非常多,可以使用FormerlySerializedAs,参数是之前的字段名,这样可以起到既改名又保留了数据的作用。
和检视面板相关的特性就介绍到这里,其实官方还有更详细的描述,下一篇会介绍菜单和运行时相关的特性。
老外的文章是对Unity官方参考文档的一个归纳
我这篇文章就是对归纳做一个补充说明……
Unity中有很多attributes,如果你序列化过一个字段,那你肯定用过SerializeField,如果你扩展过编辑器,你很可能已经接触到RequireComponent
但是除了这些常见的,Unity还提供了其他一些在我看来很实用的attribute,下面是我做实际测试过的一些,当做是一个补充说明。
就按照老外文章的顺序来吧。
检视面板相关
现在的大部分文章,都在讲通过单独写一个类继承Editor来自定义检视面板,这样做肯定没有错,但是其实一部分功能完全可以通过下面这些attribute实现。[ToolTip(“我是描述”)]
有时候在检视面板中看到一个字段,在你鼠标停留在上面一段时间,或者光标输入字段值的时候,会弹出一段文字对这个字段进行描述。
我们的自定义类也可以有这样的文字描述,只要在字段上加上[ToolTip(“……”)]就可以。不过如果写中文的话,因为默认字体非常小,所以看得不是很清楚。
[Space(10)]
在检视面板中被这个属性描述的字段,在它的上面会空出指定像素的空行,其实和EditorGUILayout.Space以及GUILayout.Space差不多。测试10像素效果就不错。
[Header(“Health Settings”)]
会在字段上方显示一个标题,非常好使。截个图。
Header会自动排版增加一行空行,所以没必要额外写Space了。
[Range(0,10)]
会将字段的值限制在指定的范围内,比如上面就是限制在0-10,并且检视面板会变成一个滑动条的形式。
[Multiline]
标记string字段在检视面板里显示多行。默认是3行,也可以填入一个表示行数的参数。
[TextArea(1,5)]
和Multiline很像,但是可以指定最小行数和最大行数,如果内容超过最大行数,会出现滚动条。
[HideInInspector]
和字面意思一样,会在检视面板隐藏这个字段
[SerializeField]
用这个attribute修饰的字段,会被序列化,关于序列化的详细内容可以参考官方文档。它也会在检视面板中看到,即使是private或者protected的变量也一样。
[FormerlySerializedAs(“oldName”)]
在unity里,当一个序列化字段修改了名称,默认的该字段的序列化字段会丢失,如果结构不复杂,丢了无非是重新指定一次,但是如果序列化的数据结构很复杂,或者非常多,可以使用FormerlySerializedAs,参数是之前的字段名,这样可以起到既改名又保留了数据的作用。
和检视面板相关的特性就介绍到这里,其实官方还有更详细的描述,下一篇会介绍菜单和运行时相关的特性。
相关文章推荐
- 一步一步跟我学易语言之第二个易程序菜单设计
- C#、ASP.NET通用扩展工具类之TypeParse
- Lua编程示例(二):面向对象、metatable对表进行扩展
- Windows Powershell扩展类型系统
- C#、ASP.NET通用扩展工具类之LogicSugar
- SQL Server下几个危险的扩展存储过程
- jQuery 学习第七课 扩展jQuery的功能 插件开发
- 运行Node.js的IIS扩展iisnode安装配置笔记
- 一个扩展时间段的dir命令的vbs脚本
- Ruby中使用SWIG编写ruby扩展模块实例
- PHP memcache扩展的三种安装方法
- 用C/C++扩展你的PHP 为你的php增加功能
- .NET 扩展实现代码
- FCK编辑器(FCKEditor)添加新按钮和功能的修改方法
- ecshop后台编辑器替换成ueditor编辑器
- JS扩展方法实例分析
- JavaScript Array扩展实现代码
- 使用JQuery库提供的扩展功能实现自定义方法
- 10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
- javascript String 的扩展方法集合