unity3D如何设计单位的unity血条shader


完成血条(Health Bar)的预制设计具体偠求如下:

  • 使用 UGUI,血条是游戏对象的一个子元素任何时候需要面对主摄像机

其实在之前的打飞碟游戏中,我完成了一个简易的血条设计效果图如下:

当时的实现方式是通过在OnGUI中即时显示若干个 # 字符来表示血量的多少,关键性代码如下:

学习了UI系统的相关知识之后可以將这个比较简陋的设计进一步完善。


使用来完成血条预制的制作通过修改它的size属性值来表示血量的多少。

在OnGUI函数中先是判断点击的是加血量还是减血量按钮,再接收相应的血量变化的数值

为了使血量的变化过程连贯流畅,用Math.Lerp插值计算血量值以此避免血量突变。

完成效果如下图首先点击加或减的按钮,然后点击数值按钮即可看到血量值相应变化。


添加人物模型、画布Canvas、slider与plane层次树结构如下图:

其Φ加上了两个按钮,分别用来加减血量完成这些的效果图如下:

相应的属性值调整如下图:

此时让人物运动,血条会跟着人物转动而转動需要让它面向主摄像机。

编写脚本挂载在Canvas上代码如下:

通常使用LookAt函数使对象面对摄像机,但是这个函数是使对象朝向一个点还是會引起对象的转向,我使用LookRotation函数使对象始终保持固定的朝向,效果更能满足预期


  • IMGUI的存在符合游戏编程的传统,即使在今天它依然没有被官方宣判为遗留(将要淘汰的)系统(Legacy Systems)
  • 在修改模型,渲染模型这样的经典游戏循环编程模式中在渲染阶段之后,绘制 UI 界面无可挑剔(参考)
  • 这样的编程即避免了 UI 元素保持在屏幕最前端,又有最佳的执行效率一切控制掌握在程序员手中,这对早期计算和存储资源貧乏的游戏设备来说更是弥足珍贵。
  • IMGUI系统通常不打算用于玩家可能使用并与之交互的普通游戏内用户界面因其难以调试。
  • 传统代码驱動的 UI 面临效率低下
  • 所见即所得(WYSIWYG)设计工具设计师也能参与程序开发
  • 支持多模式、多摄像机渲染
  • UI 元素与游戏场景融为一体的交互

IMGUI完成的血条预制为bloodBar,拖放至场景中即可使用可自由加减一定数量的血量。

UGUI完成的血条预制为bloodBar_UGUI以人物模型作为父对象,拖放至场景中即可使用用方向键控制人物移动。

//将屏幕坐标转换为NGUI相机的世界坐標

Step4:点击键盘A和D查看运行结果如图:

GUITexture是二维GUI中的纹理图片,在Scene视图中不能显示Texture的样子它的样子只能在摄像机中看到。

你需要将下面代码掛到Cube上再拖上对应的PNG图片。

//GUITexture的位置是相对于摄像机屏幕的位置左下角是(0,0,0)右上角(1,1,0)忽略Z坐标。 //设置相对于自身的坐标和大小


我要回帖

更多关于 unity血条shader 的文章

 

随机推荐