【游戏开发】unity教程8 用IMGUI和UGUI实现血条
github传送门:https://github.com/dongzizhu/unity3DLearning/tree/master/hw8/enhancedDisk
视频传送门:https://space.bilibili.com/472759319
目前做的比较完善的且有对抗性质的就是打飞碟的那个小游戏了,所以这次我们直接在这个项目上做改动,将原本计分的位置改为血条。
两种实现
IMGUI
因为之前的GUI就是用IMGUI制作的,所以改起来比较方便。
首先我们在UserGUI中添加三个变量,分别表示当前的体力值health,以及当前变化的目标体力值resulthealth,以及标志着resulthealth是否需要更新的信号flag。
接下来就是在所有改动score的地方将UserGUI的flag设为true,比如在每次得分的时候,如下图所示。
最后就是将原本用一个Label来显示分数的地方改成HorizontalScrollbar;其中health的变化我们可以应用Mathf中的Lerp函数来平滑,使得滚轴均匀变化,在视觉上不那么突兀;然后每次只要flag为true就更新一下resulthealth的值即可。
最终的效果如下图所示。
UGUI
UGUI则相对复杂一些。
首先我们在main下面新建一个UI中的Canvas命名为bloodC,然后在Canvas下新建一个Slider命名为bloodS。
我们将Slider的Background和Handle Slide Area全部勾选为非激活的状态,然后将Fill Area中的color选为红色,因为我们只需要它就可以实现血条的效果了。最后还需要调一下bloodC的position和scale就大功告成了。
为了用代码控制slider,我们还需要三个新的对象分别是GameObject、Canvas以及Slider。
然后我们通过GameObject.Find()找到canvas,通过transform.Find()找到子对象bloodC以及bloodS。
这里需要指出的是,我们需要将canvas调用SetActive设为false,这样保证在大多数情况下都不会显示血条;然后在需要显示血条的时候将其设为true。但是需要注意,如果一开始就将它勾选掉,那么Find函数将找不到它,因为都没有激活那么自然也就不是子对象了;所以要在程序开始运行的时候将其设为激活状态,然后在这里也就是start函数中首先用Find找到这个对象,然后再设为false。
最后在游戏进行的时候,因为之前已经设置好了位置,所以这里直接改动value也就是滚动条的位置即可。
最终效果如下所示。
两种实现的对比
总体来说,IMGUI的实现较为简单,不需要使用UI组件,可以快速完成;但是缺点就是因为操作简单,所以很多想要的效果很难实现,而且调整整体布局会是一件很困难的事情,每个部件之间是彼此分离的。
而UGUI则是通过游戏对象来进行管理的,符合unity3d的总体设计逻辑,与其他对象之间的联系更加紧密(如Camera);而且可以很轻易的用几行代码做到让血条保持在对象头顶并时刻正对玩家。
综上所述,IMGUI其实是一种临时凑合的工具,只有在极少数简陋的情况下可以直接使用IMGUI;大多数都是用于在游戏中显示调试信息。若想真正在成品中实现交互,还是需要用UGUI。
有关预制
这里生成的Canvas就可以直接拖入下方的Assets面板中,成为一个预制。这样如果在其他scene中想要再次使用,就可以直接脱出来;或者如果想用代码直接控制生成,也需要将设置好的结构保存为预制,然后直接load进当前场景。
【游戏开发】unity教程8 用IMGUI和UGUI实现血条相关推荐
- Unity 创建2D平台游戏开发学习教程
了解如何使用C#在Unity中创建您的第一款2D平台游戏 你会学到什么 使用Unity创建2D奥运会 使用可脚本化的对象和单一模式 使用良好的编程实践 创造武器和射弹 使用可脚本化的对象和委托模式创建 ...
- C#和Unity编码和游戏开发学习教程
MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:110节课(26小时25分钟)|大小解压后:18.6 ...
- Unity4.x 2D游戏开发基础教程第1章Unity及其组成的介绍
Unity4.x 2D游戏开发基础教程第1章Unity及其组成的介绍 本书主要讲解的是,如何使用Unity开发2D游戏.但在开始讲解之前,最好先熟悉一下Unity这个工具.本章会首先介绍Unity的下 ...
- Unity 4.x 2D游戏开发基础教程大学霸第一更
Unity 4.x 2D游戏开发基础教程 大学霸 第1章 Unity及其组成的介绍 本书主要讲解的是,如何使用Unity开发2D游戏.但在开始讲解之前,最好先熟悉一下Unity这个工具.本章会首先介 ...
- unity2d游戏开发系列教程:二、新建工程并熟悉Unity编辑器常用功能
目录 unity2d游戏开发系列教程:一.环境安装 第一步.打开项目 耐心等待一小会 工程界面 第二步.创建第一个场景(第一关)进行试玩 点击图中标号1的运行按钮,即可简单试玩感受,操作如下 移动A, ...
- Unity2D游戏开发基础教程1.2项目、资源和场景
Unity2D游戏开发基础教程1.2项目.资源和场景 如果使用Unity制作游戏,就一定会接触到项目(Project.资源(Asset)和场景(Scene).本节将依次介绍它们. 1.2.1 项目 ...
- Unity2D游戏开发基础教程1.2 项目、资源和场景
Unity2D游戏开发基础教程1.2 项目.资源和场景 如果使用Unity制作游戏,就一定会接触到项目(Project.资源(Asset)和场景(Scene).本节将依次介绍它们. 1.2.1 项目 ...
- unity2d游戏开发系列教程:一、环境安装
从这篇文章开始,一步一步教大家从0开始通过2DGameKit项目进行2D游戏开发 第一步.环境安装 1.先使用手机下载Unity Connect并注册登陆 2.进入unity官网https://uni ...
- unity2d游戏开发系列教程:四、一个2D游戏所需要的主要功能(游戏框架)
目录 unity2d游戏开发系列教程:一.环境安装 unity2d游戏开发系列教程:二.新建工程并熟悉Unity编辑器常用功能 unity2d游戏开发系列教程:三.场景布置,增加怪物和机关 原文下载 ...
最新文章
- app专项测试(稳定性测试、安全性测试)
- 数据处理的两个基本问题05 - 零基础入门学习汇编语言42
- 工作328:uni-两个页面对象传递
- TFS使用指南——从服务器上获取最新的项目文件
- 从UI设计在国内的发展历程来看,UI设计发展前景如何?
- Outlook打开工享Calendar
- CWnd::FromHandle与CWnd::FromHandlePermanent有什么区别
- html5游戏 遥控器按键,遥控器按键功能说明汇总
- MySQL分配内存多少合适_mysql 如何分配内存
- MathType不能正常右对齐解决方法
- 图论宽度优先搜索---八数码
- TPLINK路由 无线MAC地址过滤设置
- xp计算机启动检测硬盘,让WinXP系统每次开机都能自检并修复硬盘
- GIT压缩多次提交记录为一次
- 缺陷的严重程度(Severity)
- M001: MongoDB Basics chapter 2 The MongoDB Query Language + Atlas学习记录
- 调查:十一长假将至各位同仁有什么计划呢?
- 【Python】pdf转ppt
- 沁恒微 蓝牙分析仪 BLE analyzer入门
- 四十七 停电与打牌(上) 我在软件园的那些日子里