unity3d ugui 血条怪物血条怎么做

8782人阅读
Unity3d(27)
通过gui的GUI.DrawTexture方法来实现血条,如下图:
using UnityE
using System.C
/// &summary&
/// 小伍 QQ:
/// &/summary&
public class Wy2HealthBar : MonoBehaviour {
public Texture2D HealthBg;
public Texture2D H
public Vector2 offset = new Vector2(13,15);
private Wy2AIH
void Setup()
health = GetComponent&Wy2AIHealth&();
void Reset()
// Use this for initialization
void Start () {
// Update is called once per frame
void Update () {
void OnGUI()
if (Event.current.type != EventType.Repaint)
Rect rectbg=new Rect(0,0,256,64);
GUI.DrawTexture(rectbg, HealthBg);
float width = (health.CurrentHealth*145) / health.MaxH
if (width & 1)
Rect rectfc = new Rect(offset.x, offset.y, width, 10);
GUI.DrawTexture(rectfc, Heathforce);
其中health是角色的生命脚本对象,maxhealth-最大血量,currenthealth是当前血量
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:544604次
积分:8489
积分:8489
排名:第1859名
原创:298篇
转载:77篇
评论:96条
(2)(3)(1)(1)(1)(2)(1)(1)(1)(1)(2)(2)(2)(1)(1)(1)(6)(4)(1)(1)(5)(1)(1)(12)(7)(4)(9)(8)(1)(4)(6)(1)(1)(5)(7)(4)(3)(4)(3)(6)(4)(3)(2)(11)(7)(3)(10)(14)(7)(12)(11)(13)(13)(1)(1)(4)(15)(4)(10)(1)(1)(10)(1)(8)(18)(36)(11)(21)扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
【UI】UGUI&1&制作血条效果
阅读&1625 |
&&好久都没写博客了,6月后一直忙于考试复习,之后又忙着找实习,最后也算找到了实习的地方,目前主要任务是做UI,所以打算写写这方面的心得体会和一些例子& 一般用slider来设置一个进度条或血条的显示效果(其实是我喜欢用这种办法QAQ),比如Windows10调节声音时右边会有一个百分比显示调节的大小;主角生命值等
在UGUI中新建一个slider是这样的:
默认的Slider有个拖动滑块,有些挡事。一般的血条,当生命值为0时,应该是空的才对。
于是我们需要改一改。
在改之前我先来说说Slider的组成
从上面的图可以看出
Slider(含有slider组件)= 背景(Image)+ Fill Area(空物体)+ Handle Slide Area(空物体)
而Fill Area和Handle Slide Area的子物体分别是填充色(Image)和滑动条(Image)
看到这里你可能会有一个疑问,那就是为什么不在上直接加一个Image组件,Fill Area直接充当填充色多省事。但你要知道子物体锚点的参考系是其父物体,而不是整个窗口。利用空父物体可以较好的控制锚点。第二个好处就是层次清楚,看名字就知道是什么了。当然这里如果你就是不想用空物体其实也没什么,调整好了就OK,具体情况具体对待吧。另外,你可以把Slider拆开来看,发现各个子物体所在的位置关系,像这样:
Slider组件上有两个槽分别对应填充色和滑块对象。
我们是做血条,所以滑块是不需要了,直接删掉
可当我们去掉滑块后,依然不像一个血条,因为当主角的生命值为0时,血条应为空,但改变slider的value值为0后却是这个样子的
(为了看清楚一些,我把fill改为了红色)
那么怎么该呢?
首先把Value的值改为1;
接着让Fill Area和Fill一样大小,再调节Fill Area使其和背景图片重合或者一个你比较满意的位置。此时再拖动Value的值试试,是不是Value的值为0的时候没有圆点了呢O(∩_∩)O~
接下来我们做一个显示Slider的百分比,也就是数字显示剩余血量
在Slider中也提供了和Button一样的事件机制(其实没有也可以自己加)
方法和Button一样。但这里并不是在点击的时候调用一次函数,而是Value的值每改动一次就调用一次。
在Slider中添加一个Text
添加脚本到Text,然后把这个物体拖入槽中选择刚刚自己写的函数即可(注意这里传入的参数value,在选择函数的时候有两个同名的函数,选择不带参的函数)
(别忘了using UnityEngine.UI;注意不要把获取组件的语句放在Start中,否则只在第一次获取了数值,这里需要每次改变都刷新一次)
选择Editor and Runtime可以在编辑模式下也实时改变数值。
最后的显示结果。
其实,这里最好还是用于调节声音大小,如果你要用作血条,可以用image.fillAmount来改变数值而不是改变slider的value的数值(这是 提醒的)希望这篇文章对你有帮助O(∩_∩)O~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
作者的其他最新博客
评论 ( 个评论)
看了一下Image的这个属性,确实用作血条比较合适,在代码中可以随时改变血量有不会受到UI点击的影响,O(∩_∩)O学习了~温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
3d旅游虚拟现实
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(832)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'Unity3d 血条/进度条制作',
blogAbstract:'/*用Unity做血条或进度条真的很方便,GUI里scrollbar就可以轻松实现,再加上lerp一个血条或进度条就完成了。*/using&UnityEusing&System.C&public&class&BloodBarTest&:&MonoBehaviour&{&&public&GUISkin&theS&public&float&bloodValue&=&0.0f;&private&float&tmpV',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:6,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'unity3d
3d旅游虚拟现实',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 unity3d slider血条 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信