NGUI报错小结

来源:互联网 发布:mac系统盘在哪 编辑:程序博客网 时间:2024/04/27 23:28

用 NGUI的时候,想实现一个灰度功能,就是让彩色图片变成灰白的,这样就可以做按钮灰掉不可点击状态,也可以做一些灰色图片显示,表示功能关闭。于是自己就按网上的代码,写了一个灰度shader,把先前Atlas用的shader换成了自己的shader,虽然灰度功能实现了,但是一直在报错。错误如下。

Unlit/Transparent Gray shader doesn't have a clipped shader version for 1 clip regions

这个错误是NGUI里的UIDrawCall输出的


后来看到一篇文章才知道问题所在,文章在这里

我用的NGUI版本是3.7.5。原因大概是NGUI在较新的版本中,为了实现Clipping嵌套,为他自身的一些shader写了几个版本。就是说所以如果你新增了自己的shader,而且要支持Clipping的话,就需要也同时实现以上的4个版本.

因为我这个灰度图片会添加到UIScrollView上,用过UIScrollView的都知道,UIScrollView自身带了一个有Soft Clip的UIPanel,所以只写一个shader是不行滴,要同时实现4个shader.

网上有人说把Cliping设为None就不会出现上面的错误,不过这个只有在你使用的UIPanel不使用Clip的话是可以这样做的,因为不使用Clip话,一个shader就可以了,但是对于像UIScrollView这种需要使用Soft Clip的,还是老老实实写四个shader吧。


顺便提一下Atlas换shader的地方,如下图。


NGUI使用的shader所在的位置


实现自己的shader时,命名参考上面图片显示的NGUI的shader就行。拿我的来说,我是实现的灰度功能,然后4个shader的命名就是这样的

custom - Transparent Colored Graycustom - Transparent Colored Gray 1custom - Transparent Colored Gray 2custom - Transparent Colored Gray 3

如果是拷贝现有的shader,在其基础上实现自己的功能的话,记得还要修改shader里面的名字,如下图示:


这里命名开头使用 Custom,是为了和NGUI现有的Unlit - shader区分开,到时你添加自己的shader时可以从 Custom 里选取。你替换shader时可以从下拉列表里找到 Custom选项。


0 0