有时我们需要在Unity3D中绘制进度条,如:

          或       

如果使用4.6版本以下的unity绘制环形的进度条可能需要费点劲。我搜到的大多数方法都是用NGUI插件,但有时只是为了简单的画一个环形UI,使用NGUI反而还增加了学习成本。有一个利用CutOut材质的方法能够利用alpha值,灵活的控制进度条中需要显示的部分,以环形进度条为例,方法如下:

1、在PS中制作一张如下所示的图,RGB为进度条想要的颜色,alpha值从5-250环形渐变(如果从0-255,在进度为0%或100%时会显示异常,这与CutOut材质的特性有关)

2、新建材质 选择Transparent Cutout

3、设置纹理

4、将导入的纹理拽入材质

5、新建Quad

6、选择第2步创建的材质

7、创建正交相机,并将深度置为最前

8、将它们拖到荒无人烟的地方(这是UI,7、8两步确保它是在场景的最前面,且不会出现在才3D场景中)

9、调整Alpha cutoff观看效果

10、若想做出反方向的效果,则需要在做图的时候勾选反向

11、我们的目标是:写脚本控制alpha cutoff的值

12、代码如下,最核心的一句已经框起来了

到此为止,转圈的进度条/能量条的方法阐述完毕,核心思想是利用CutOut材质控制alpha值控制进度条的显示。在CutOut材质中,当alpha值高于设置的"alpha cutoff"时,完全不透明;低于设置的"alpha cutoff"时,完全透明。利用CutOut材质的这种特性,通过制作合适的渐变纹理,可以实现各种各样的进度条,美中不足的是抗锯齿能力不太好。

      在这篇博客写完后,我觉得CutOut材质不能有半透明效果,不太合理,于是乎搞了个shader稍微改进了下,你可以在这里下载本文改进后的资源。至于博客中的截图嘛……都差不多,懒得更新了,需要的童鞋看看代码就明白了。

Unity3D中灵活绘制进度条的更多相关文章

  1. knova绘制进度条

    效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  2. android中SeekBar拖动进度条的使用及事件监听

    下面和大家分享一下android中SeekBar拖动进度条的使用,以及事件监听.拖动进度条的事件监听需要实现SeekBar.OnSeekBarChangeListener接口,调用SeekBar的se ...

  3. (数据科学学习手札91)在Python中妥善使用进度条

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常运行程序的过程中常常涉及到循环迭代过程,对 ...

  4. 用Raphael在网页中画圆环进度条

    原文 :http://boytnt.blog.51cto.com/966121/1074215 条状的进度条我们见得太多了,实现起来比较简单,它总是长方形的,在方形的区域里摆 放就不太好看了.随着cs ...

  5. DirectShow 制作在Unity3D中可以设置进度的视频播放插件

    如果想在Unity3D中去播放视频文件,那么最方便的方法就是使用它自带的MovieTexture. 可以实现简单的视频播放功能. Play Pause Stop. 有也只有这三个功能,  如果你想要一 ...

  6. WPF中定时器与进度条的配合使用

    WPF中定时器使用的注意事项: WPF需要使用System.Windows.Threading.DispatcherTimer定时器,而不能使用System.Timers.Timer定时器.因为Sys ...

  7. JQuery中简约的进度条插件推荐

    JQuery Progress Bar是基于JQuery开发的进度条插件,秉承了JQuery的简约哲学.不仅容易使用,而且可以轻松定制外观.对于使用了JQuery框架的项目来说,需要使用进度条控件时这 ...

  8. 关于各种Vue UI框架中加载进度条的正确使用

    这里拿MUSE UI 中的进度条举例 <mu-circular-progress :size="40" class="icon" v-if="i ...

  9. css绘制进度条,持续转动的进度条

    //只有 progress pregress-par bar,进度条不会转, //增加 active 这个类,进度条会转, //html结构 <div class='progress activ ...

随机推荐

  1. Python之路【第二篇】:Python基础(一)

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? ...

  2. 二、搭建struts2的开发环境

    二.搭建struts2的开发环境 下载地址:http://struts.apache.org 解压后的目录结构: apps:框架本身提供一些案例(学习) docs:框架本身提供的文档(指南和API). ...

  3. 代码快捷键的设置读取App.config方法

    附件下载:http://files.cnblogs.com/files/qtiger/ShortcutAchieve.zip 代码实现最重要(增加引用using System.Configuratio ...

  4. 设置DataGridView 显示自己添加编辑的列名,不动态显示数据库本身

    设置DataGridView 显示自己添加编辑的列名,不动态显示数据库本身. 方法: (1)界面操作,把DataGridView控件拖放在窗体中,就看到DataGridView控件的右上角有个小三角, ...

  5. linux启动后自动登录并运行自定义图形界面程序

    在<Ubuntu CTRL+ALT+F1~F6 进入命令模式后不支持中文显示的解决办法>一文中提到linux启动在以后运行一个独占显示器的图形程序的两种办法. 1.不启动xserver,使 ...

  6. VCL主要框架

    TObject ->TPersistent  Classes,抽象类 ->TComponent  Classes,抽象类 ->TControl  Controls ->TGra ...

  7. Unicode字符以16进制表示

    int(x [,base ])         将x转换为一个整数 long(x [,base ])        将x转换为一个长整数 float(x )               将x转换到一个 ...

  8. ado.net的5个主要对象

    connection 连接对象 command 命令对象,指示要执行的命令和存储过程! datareader是一个向前的只读的数据流. dataadapter是功能强大的适陪器,支持增删改查的功能 d ...

  9. SpringMvc中Interceptor拦截器用法

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆等. 一. 使用场景 1 ...

  10. Percona-Xtrabackup 2.3.3 慢查询依旧堵塞MariaDB备份(三)

    MariaDB [yoon]> select version();+---------------------+| version() |+---------------------+| 10. ...