UnityEditor : Custom PropertyAttribute and PropertyDrawer 自定义标签

在我之前的文章里,有介绍到怎么用自定义的Inspector(检视窗口)

在这篇文章里,我会介绍用PropertyAttribute加上PropertyDrawer在Inspector中显示 特定(自已定义) 的字段

PropertyAttribute 基础知识

  1. 创建这个类时不要在Editor 文件夹下。
  2. 继承于 UnityEngine.PropertyAttribute
  3. 类构造函数里可以有多个参数,当你引用时可以传递这些参数。

PropertyDrawer 基础知识

  1. 创建这个类时必须在Editor文件夹下。
  2. 继承于 PropertyDrawer
  3. 类头有 [CustomPropertyDrawer(typeof(XXXX))] 声明
  4. 重写OnGUI函数,来进行成员绘制

废话就不多说,之前有朋友问过说 想查看一个字段,而不允许开发者去编辑它 应该怎么办,当时没有完美的办法,现在应该有了。

直接上图,工程目录、文件目录、及Inspector效果图:

demo_editor_att_001

脚本1:DesableEdit.cs:

脚本2:DrawerTestAttribute.cs

测试脚本:

附工程文件地址下载:https://github.com/pingzi1066/Unity_DisableEdit

其它备注-Unity自带的:

上文中private 修饰的字段直接加[DisableEdit]无法显示,需要多加[SerializeField]才行。

类似的还有[HideInInspector],主要用于公有字段。

Unity几个学习视频:

  • https://www.youtube.com/watch?v=itkm-emb5tg
  • https://www.youtube.com/watch?v=t-wShOv8c1E
  • https://www.youtube.com/watch?v=s1o0gZwJS-4

写在最后:PropertyDrawer 的扩展性极其好,如果想在编辑器上写更好的工具,我认为这个东西是必须的。