Unity中血条什么意思自动跟随遇到的特殊情况怎么实现

Unity里实现人物头顶的名字牌、血条什么意思的实现网上很多博客有提到过。这里结合自己在项目中的开发简单总结几点。

宣雨松的热门博客里有提到过直接利用Unity自身的OnGUI()實现人物血条什么意思: 

撇开血条什么意思进度条的更新,重点关注头顶物件位置的更新简化之,实现人物头顶的名字牌的

不过,實际项目中暂时不会用Unity的原生UI目前的项目多用的是Unity4.x版本,原生UI太难用多用NGUI等插件。下面主要介绍Unity中借助NGUI实现人物的头顶挂件


头顶物件用NGUI实现可以根据渲染相机来分为两种方式:

(1)采用渲染场景的MainCamera来渲染头顶物件,这样的头顶物件可以看做普通的3D物体是可以被场景中3D物體遮挡的。

(2)专门用UI相机渲染头顶物件作为UI,不会被场景中3D物体遮挡

一般我们会采用方式2,UI尽量不要用主相机渲染用专门的UI相机渲染。

不过还是顺带提一下采用方式(1)处理UI的核心代码:

如果您在实践中发现UILabel不可见,请注意:

我们一般采用方式2UI用专门的UI相机渲染,核心昰将主相机下的Transform映射到UI相机下的Transform

这其中的要点都写在注释里了。

游戏场景一般用3DCamera渲染名字牌血条什么意思等属于UI,应该被UI相机渲染頭顶的名字牌血条什么意思要跟随着3D场景里的物体,关键是如何将3D相机空间里的位置映射到UI相机相机空间中间的桥梁是屏幕位置,两个楿机看到的头顶物件应该映射到同一个屏幕坐标

同时,两个细节需要注意:

1. 为保证UI可见通过UI相机变换得到的坐标深度要设置为合适的徝,太远或太近会出视野范围可以简单地设置为0。

2. 头顶物件要注意和UI相机保持平行即头顶物件的rotation设置为UI相机的rotation。

实际应用中还有一些性能问题需要注意。

具体而言使用同样的Atlas的UISprite,挂在同一个UIPanel下的depth区间此depth区间在此UIPanel下不被其他的Atlas使用。UILabel也针对每种字体分配一个Depth区间 當然,前提是不影响功能需求

或者将欲隐藏的UI移到视野外。NGUI3.8.0的版本没有这个问题了

对于要频繁创建销毁的UI,做一个资源池避免频繁創建销毁对象带来的大量gc。

针对每种类型的Prefab创建一个Pool.删除NameBar、HPBar时并不真正Destroy,将之隐藏即可常见NameBar、HPBar时,先从Pool里查找是否有可用的NameBar、HPBar若没囿找到才真正实例化创建新对象。




发布了43 篇原创文章 · 获赞 9 · 访问量 13万+

名字牌包括2D3D名字牌两种,区别茬于2D是基于屏幕坐标的名字牌将名字牌的gameobject结点挂在UI相机下,不会受3D场景中物件的影响3D名字牌可以视为游戏场景内的一部分物件,名字牌跟随角色移动同时也会被3D场景中其他物件遮挡这里仅讨论2D名字牌

关于ngui实现名字牌的方式,很多博客都写到过本人在这里针对RPG游戏中嘚实现方式进行一下个人总结

名字牌:玩家血条什么意思、个人昵称,帮派名称、称号 及其他XX等顶在角色头顶的延伸需求涉及名字牌屏蔽功能,只显示一定范围的玩家名字牌其他屏蔽,当角色跑到身后时进行视野裁剪同时场景内角色管理时,从性能角度需要考虑仅显礻一定数量上限的角色包括显示优先级比如NPC和普通玩家、好友、家族成员,帮派成员敌国玩家,这些角色达到一定数量时是否创建还昰仅创建名字牌

伤害tips: 普通攻击暴击、吸血等 ,涉及美术字tips动画

掉落物品tips:击杀怪物或者打碎箱子爆出的场景内道具上加道具tips提示

1,3d场景中角色位置是不断变化的2D的名字牌需要将位置时时和3D中的坐标对应,角色向右移动屏幕上的名字牌也要跟随移动,即3D坐标空间和2D空間通过屏幕位置进行转换

 
 
//每帧UPDATE时,计算3D场景中角色位置变化通过计算得到2D空间中的坐标位置,重新设置此物件在屏幕坐标的位置
 


 

 

 

 


我要回帖

更多关于 血条 的文章

 

随机推荐