需求置灰
在属性 面板添加一个小功能,置灰属性。 设计思路很简单, 就是通过勾选或者不勾选,实现置灰 或者不置灰。
包括对scroview的置灰等等…
效果预览:
代码分析
实际上,在NGUI中 所有需要渲染的 物体 都继承自 wight,
而编辑器 部分则 作用于它。
在UIWidgetInspector 中。
这个脚本作用于 UIWidget, 而我们 知道所有需要渲染的元素都继承自 UIWidget 包括sprite
可以找到这个, DrawInspectorProperties 画属性面板的 属性,我们就可以在里面进行 画一个Toggle,
然后根据Toggle 对 Widget 进行设置。
UIWidgetInspector 是一个 单例。
对于画它的 时机,在NGUITransformInspector 中,
通过一个 单例 调用了这个方法,
直接我们 就可以再里面 进行添加了些 额外的需求了。
代码其实也 很简单, 在UIWidget 中添加 了这个isGray属性后,
就可以 在 get 或者 set里进行 改变了。
我这里的处理 十分简单, 就直接替换 drawCall的 shader,
当然这样做有不好的地方, 就是这个 drawCall 他们的材质是公用的,
因此,得重新用另一个材质球给置灰的shader 使用,实现也十分简单。
关于 置灰的算法, 有很多种, 可以是平均置灰,灰度系数值置灰 等等…
可以参考这个 传送门
这里比较简单,
待续…
另外针对 scroview的 置灰 可以参考这个
默认情况下NGUI 使用的是这个
后面的1 表示 panel的 clipCount。
相应的 只要建立一个 对应的 名字的 灰度 sharder 即可。
生于1997,被人直播,生活素材被人剪辑成商品出售,身边潜伏的都是撒旦演员,我就是撒旦的献祭物.
吸血鬼,恶魔张牙舞爪,欢呼雀跃
人体试验,精pua.麻木的活着,真不如死