当前位置:   article > 正文

Unity编辑器之自定义Property Attribute_unity propertyattribute

unity propertyattribute

一、前言

unity 本身自带很多的attribute, 如,Rang, Min,AttributeUsage,Header,ToolTip 等。但是开发过程中往往需要程序根据工程需要或者个人喜好去做一些自定义的attribute。比如,想要对某些属性加颜色突出显示,又或者突然间嫌弃Rang的滑条模式等。

二、Property Attribute书写格式

unity自定义attribute继承于UnityEngine.PropertyAttribute类,如下图:

  1. AttributeUsage: C#脚本自带的attribute, .net官网AttributeUsage介绍
  2. MRang: 自定义的attribute,它继承了PropertyAttribute类;
  3. public readonly int min: 变量 min, 自定义attribute下边界;
  4. public readonly int max: 变量 max, 自定义attribute上边界;

三、自定义Property Attribute的使用


如上图,我们期望把m_walkanble这个变量限制在 [0,100] 这个区间内。
到这里,其实我们已经完成了对MRang的使用,但是在Unity编辑器中我们会发现压根没效果。具体原因是,在上诉步骤中我们实际上只进行了约束的设置和存储

四、自定义Property Attribute约束的实现Property Drawer

为了实现MRang对变量m_walkanble的实际约束。我们需要创建一个新的脚本,它继承于UnityEditor.PropertyDrawer这个类,这个新的脚本负责约束的具体实现。这个脚本一定要放在Editor目录下

  1. CustomPropertyDrawer: Unity自带attribute,在此处指定要处理的MRangUnity官网CustomPropertyDrawer介绍
  2. MRangeDrawer: 负责处理Inspector面板内被MRang修饰的变量;
  3. PropertyDrawerUnity官网PropertyDrawer介绍

在这个脚本里, 我们重写了OnGUI这个方法,在这个方法里我们获取了之前设置的边界参数minmax以及当前的变量数值property.intValue,我们用Mathf.Clampproperty.intValue进行了裁剪并将结果覆盖原来的值。

五、其他

  1. 自定义变量增添名称展示



    最后的编辑器Inspector面板结果:
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/100913
推荐阅读
相关标签
  

闽ICP备14008679号