NGUI报错小结

用 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 Gray
custom - Transparent Colored Gray 1
custom - Transparent Colored Gray 2
custom - Transparent Colored Gray 3

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


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


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值