前言
之前的Unity项目中,UI部分需要的流光比较多,特别是一些使用图集的UISprite,为节省图片资源,必然是使用shader来实现。
搜了很多前人的分享,发现一些有意思的解决思路,但并没有很完善的分享,而且我们的需求还包括自定义流光图、流光间隔、流光时间等。所以自己做了一套,这里正好整理分享一下。
本方案最终实现的流光效果如下:
此流光效果,有以下优点:
- 支持UITexture
- 支持使用图集的UISprite,且每个UISprite可以独立效果
- 可以自定义流光的图、流光速度、流光时间间隔、流光强度等
不过,也有以下缺点或者说是待完善的地方:
- 应用于UISprite时,图片的清晰度会受到影响,变得模糊一点
- 原理是通过独立的材质球来做,所以会增加NGUI的drawcall数量
实现UITexture的流光
先写shader
先看看我们的UITexture图片和流光图片:
</