unity版本:4.6 NGUI版本:3.6.

  (转载请注明参考链接及作者)

  参考链接:http://www.cnblogs.com/louissong/p/3841656.html,作者:博客园 LouisSong

  

  很多情况下,我们需要做血量条来显示对象的血量,条状的血量条很容易,直接用NGUI里面的进度条就可以实现,但是有时候我们需要在一些地方做弧形的血量条,下面介绍弧形血量条的方法。

1、首先你需要一张弧形血量的图片,导入到NGUI的Altas中,NGUI图集Altas制作参考:http://www.cnblogs.com/vitah/p/3855982.html,下面已经导入了两张表示弧形血量的图片,如下所示:

2、导入图片后可以开始血条的制作,血条的显示可以用一个进度条或者两个Sprite来表示,其实就是用两个Sprite来表示血量,一个表示当前血量,一个表示已损失的血量,进度条里的Background和Foreground实质就是如此,下面只以一个Sprite为例来说明:

  在Camera下创建一个Sprite,选择导入的表示血量的Altas和Sprite,效果如下:

  这里再介绍下Sprite的各种参数:

    Type:

       Smple:除了显示内容从图集里面获取外,其他都和Texture一样的绘制

      Sliced:这个模式支持九宫格拉伸,让四个角落的图片不变型,点击Sprite右侧的Edit按钮可以进行Sprite数据的编辑,设置Border的值即可。

      Tiled:瓦片填充,会平铺进行填充

      Filled:这个主要用来做技能CD、进度条等用。FillDir设置填充的模式(360度扇形,水平,垂直等),Fill Amount是填充百分比

      Flip:对Sprite进行翻转:水平、垂直、水平+垂直

3、为了能展示血条的增加和减少,Type肯定选择Filled不用多说,我们现在只是需要调节血条的填充模式即Fill Dir选项:

  选择Horizontal和Vertical可以看到改变Fill Amount的值的时候血条分别是从左到右和从上到下减少的,血条的边缘处会有一个斜角,如下图:

  同样我们测试Fill Dir中的Radial90、180、360选项,可以很明显的看出NGUI里面Radial90是以矩形图片左下角的点为圆心减少和增加,Radial180是以图片矩形的底边中点为圆心,而Radial360是以矩形的对角线交点为圆心进行增减,Radial90和Radial180不必说,血条的边缘显示必定有倾角,而Radical360也会有倾角的存在,如下图:

  4、事实上,我们需要的是以图片矩形的上边的中点为圆心来进行血条的增加和减少,这样才能保证边缘处的倾角美观一致,可以按如下方法制作:

  把图片进行垂直翻转,即Flip选项设为Vertically,可以看到,图片已经翻转过来,这时候选择填充模式为Radial180,圆心仍然是矩形的底边中点,但图片已经翻转,可以看到这时候血条的边缘已经一致了,效果如下:

  可以看到血条的边缘已经很美观了;

5、但是这时候,血条的显示已经翻转过来,原来的血条效果是成凹形的,现在变成凸形的了,可以改变Transform中的Rotation值再次翻转,使血条的显示和给定图片中的效果一致,如下图:

6、接下来,我们可以再按上述方式创建一个红色血条表示血量的减少,通过脚本控制它们两者的Fill Amount的值就可以用绿色表示当前血量,红色表示已损失的血量,在此不再赘述。

Github上代码

总结:

  1、现在这种方式好像只能用于半圆形血条的显示效果,一定圆心角的弧长血条没有相应的美术资源没有测试过不太清楚;

  2、原来的想法是叫美术出了一个上半环为透明的下半环为绿色的表示血量的正方形图片,然后填充模式用Radial360,类似以前实现技能CD效果的方法来做,但是在导入到Altas中Unity会自动把透明的部分给切掉,此方法失败。

  如果有更好的方法或者疑问请留言,或者邮箱linw1225#163.com(#换成@),谢谢~~~

Unity NGUI弧形血条的制作的更多相关文章

  1. unity如何显示血条(不使用NGUI)

    用unity本身自带的功能,如何显示血条? 显示血条,从资源最小化的角度,只要把一个像素的色点放大成一个矩形就足够,三个不同颜色的矩形,分别显示前景色,背景色,填充色,这样会消耗最少的显存资源. un ...

  2. 【FairyGUI & Unity】实现血条UI扣血与加血的缓动效果

    组件设计 创建一个进度条组件,作为血条. bar是实际血量条 DownBar是扣血缓动背景图层 UpBar是加血缓动背景图层 LowBar是低血量变色(和控制器配合,本文不讲) n11组合是血量参考线 ...

  3. Unity NGUI 3.0.4版本 制作网络版斗地主

    Unity NGUI 3.0.4版本 @by 灰太龙  开发环境 Win7旗舰版 Unity 4.2.1f4 本文就写个开门篇,告诉大家怎么用NGUI,第一步导入NGUI 3.0.4版本! 1.启动U ...

  4. Unity NGUI 血条制作

    NGUI 血条制作步骤 实现过程: 模拟血条的变化当点击按钮Button是血条会实时发生变化. 1.向Unity中导入NGUI2.6.3.unitypackage 点击create your ui 后 ...

  5. unity制作简单血条

    学习Unity已经10天了,也没发现有什么长进,真的急.昨天仿着官方Demo做了个射击游戏轮廓,其中需要给每个怪做一个血条. 搜了一些,挺复杂的,用NGUI或者UGUI,外加很长的代码...不过还是找 ...

  6. 关于Unity中NGUI的3D角色血条的实现

    首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...

  7. Shader实例:NGUI制作网格样式血条

    效果: 思路: 1.算出正确的uv去采样过滤图,上一篇文章说的很明白了.Shader实例:NGUI图集中的UISprite正确使用Shader的方法 2.用当前血量占总血量的百分比来设置shader中 ...

  8. 制作Unity中的单位血条

    本文章用于记录Unity的学习过程,如有疑问,欢迎交流. 1.血条的显示 在Unity场景中创建空物体,然后新建两个Image(图片),当然只用一个也行,一个作为填充来显示血量,一个作为血条的外框. ...

  9. Unity中制作血条2.0

    ##1.血量显示 不必像之前那样添加Slider组件 直接创建Image 在添加Source Image之后,将Image Type 修改为Filled 通过修改Fill Mode就可以显示不同效果 ...

随机推荐

  1. RabbitMQ基础总结

    MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 息传递指的是程序之 ...

  2. WPF处理Windows消息

    WPF中处理消息首先要获取窗口句柄,创建HwndSource对象 通过HwndSource对象添加消息处理回调函数. HwndSource类: 实现其自己的窗口过程. 创建窗口之后使用 AddHook ...

  3. [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程

    [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程 本章包含如何在 Android Studio 中书写或生成代码. Android Studio ...

  4. ENVI/IDL中.sav和.pro文件用法的不同

    软件envi5.0 sp3 .sav是IDL binaryfile。 安装方法:把ENVIProgramGenerator.sav文件拷贝到…\Exelis\ENVI50\extensions\文件夹 ...

  5. Determining IP information for eth0… failed; no link present. Check cable

    [root@hexuweb101 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0添加下面代码: check_link_down () { return ...

  6. ISoft(开源)专用下载器

    继 两年的坚持,最后还是决定将ISoft开源 之后,今天再共享一款ISoft专用下载器小工具.这款工具是一年前开发的,也是一直闲置着没去扩展更新.当时开发出来就是仿穿越火线专用下载器的样式来做的,现在 ...

  7. C# - dynamic 类型

    C#4引入dynamic关键字,定义变量时,可以不初始化它的值. dynamic类型仅在编译期间存在,在运行期间会被System.Object类型替代. dynamic myDynamicVar; m ...

  8. linux编程之指针

    这个是数组指针.指针数组.二维数组之间相互转换的代码 #include<stdio.h> void main() { ][]={,,,,,,,}; int *b=NULL; int **c ...

  9. 域名的a记录转过来他的公网ip

    首先 客户要我把域名 和项目进行绑定客户需要提供万网或者新网的账户,登进去域名管理  选项域名管理的A记录定向到那个公网ip上 与服务器做绑定然后 在服务器的iis 上 加个主机头 输入主机头名称 也 ...

  10. [转载]C#对象序列化与反序列化

    文章写的实在是太好了,忍不住转来: http://www.cnblogs.com/LiZhiW/p/3622365.html#_Toc8478 1.对象序列化的介绍 (1).NET支持对象序列化的几种 ...