赞
踩
让我们看一下下面的检视面板示例:
我们想做的是对属性进行分组,这样可以方便设计师们理解脚本的作用,设计师们也能清楚区分脚本中不同函数的不同变量。这可以通过 HeaderAttributes来实现。
有了分组,下面就来实现用变量控制变量显隐。这里Auto Anim分类下的属性只有在EnableAutoAim被设为True时才会显示。
首先创建两个脚本ConditionalHideAttribute和ConditionalHidePropertyDrawer。注意要将ConditionalHidePropertyDrawer脚本放在Editor文件夹下,否则会无法访问需要的属性。ConditionalHideAttribute脚本则放在外面。
首先创建属性,然后定义bool字段来控制检视面板上属性的显示或隐藏,并且可以进行切换。
还有些事要做。如果想让Unity在检视面板上绘制字段,需要:
检查自定义属性中的参数
隐藏或禁用基于属性参数绘制的字段
调用GetConditionalHideAttributeResult函数来检查字段是否应该显示。
ConditionalHideAttribute就像使用HeaderAttribute一样简单方便。
在有些情况下该属性会失效。
另一种会导致属性失效的情况是混合使用了其它属性绘制器(Property Drawer)例如TextAreaAttribute时,会改变属性本身的绘制方式。
这是因为类似TextAreaAttribute这样的属性会调用自己的OnGUI进行绘制,计算高度也是调用自己的GetPropertyHeight函数。这种情况下最后被调用的属性会决定最终绘制的内容。
还可以支持两个bool参数,只需加入另一个ConditionalSourceField作为参数即可。
本文来源于:brechtos.com 原作者:Brecht Lecluyse
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。