有时咱们须要在Unity3D中绘制进度条,如:学习
或
spa
若是使用4.6版本如下的unity绘制环形的进度条可能须要费点劲。我搜到的大多数方法都是用NGUI插件,但有时只是为了简单的画一个环形UI,使用NGUI反而还增长了学习成本。有一个利用CutOut材质的方法可以利用alpha值,灵活的控制进度条中须要显示的部分,以环形进度条为例,方法以下:插件
一、在PS中制做一张以下所示的图,RGB为进度条想要的颜色,alpha值从5-250环形渐变(若是从0-255,在进度为0%或100%时会显示异常,这与CutOut材质的特性有关)3d
二、新建材质 选择Transparent Cutoutblog
三、设置纹理资源
四、将导入的纹理拽入材质get
五、新建Quad博客
六、选择第2步建立的材质it
七、建立正交相机,并将深度置为最前下载
八、将它们拖到荒无人烟的地方(这是UI,七、8两步确保它是在场景的最前面,且不会出如今才3D场景中)
九、调整Alpha cutoff观看效果
十、若想作出反方向的效果,则须要在作图的时候勾选反向
十一、咱们的目标是:写脚本控制alpha cutoff的值
十二、代码以下,最核心的一句已经框起来了
到此为止,转圈的进度条/能量条的方法阐述完毕,核心思想是利用CutOut材质控制alpha值控制进度条的显示。在CutOut材质中,当alpha值高于设置的"alpha cutoff"时,彻底不透明;低于设置的"alpha cutoff"时,彻底透明。利用CutOut材质的这种特性,经过制做合适的渐变纹理,能够实现各类各样的进度条,美中不足的是抗锯齿能力不太好。
在这篇博客写完后,我以为CutOut材质不能有半透明效果,不太合理,因而乎搞了个shader稍微改进了下,你能够在这里下载本文改进后的资源。至于博客中的截图嘛……都差很少,懒得更新了,须要的童鞋看看代码就明白了。