Unity3D 游戏开发之提示栏的工作实现详解

Unity3D: 自制提示框消息 (Toast) 前言: Unity3D 自制类似 android Toast 提示框消息 显示。首先,需要自定义一个 文本UI 对象 预制体,再在需要的时候,加载显示 (0^◇^0)/ 根据字符串 参数传递,显示提示消息 阅读详情

欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。

 

    昨天把GUI做了点出来,攻击之类差不多算是正常了。不过,现在无论是人物还是敌人,在生命为零的时候都不会再有其后的结果了。生命为零,理应死掉了才对。那么今天就先完成这一点吧,文章出处【狗刨学习网】。 

 

打开编辑器,在_Script文件夹下双击打开PlayerControl脚本,首先来完善玩家角色的死亡。 

 

在“判断”标签中,定义一个用于判断玩家是否死掉了的bool变量: private bool m_isDead=false;//是否死亡 

 

然后在先前定义的GetStat函数最后加上一句判断玩家是否死掉了的语句: 

if(m_currentLife==0)
{

m_animation["Death"].wrapMode=WrapMode.ClampForever;

m_animation.CrossFade("Death");

m_isDead=true;

} 

 

在这里判断当前生命是否为零,如果为零,首先将死亡的动画状态设定为只播放一次,然后播放死亡的动画。并同时把m_isDead设定为True。最后还要在Update函数中加上这样一句: 

if(!m_isDead)
{
Attack();
Move ();
}

 

这时用于判断人物死亡后,就不给玩家控制人物了。 

现在回到编辑器中运行游戏,当玩家生命为零,就死掉了,再也无法做什么了….. 

====================================================== 

玩家的死亡解决了,接下来是敌人的。 

 

打开Enemy脚本,在Update函数中,加上一句判断敌人是否死亡的语句: 

if(!m_changeState.m_isDead)
{

} 

 

案后将Update函数中的所有函数啊、语句什么的全都移动到这个判断语句中,然后再后边的GetState函数中进行死亡动画的播放: 

void GetState()
{
m_currentLife=m_changeState.m_life;
if(m_currentLife==0)
{
m_animation[m_animationDeath].wrapMode=WrapMode.ClampForever;
m_animation.CrossFade(m_animationDeath);
Destroy(m_transform.rigidbody);
m_transform.collider.isTrigger=true;
}
} 

 

这里就是判断敌人生命是否为零。为零就播放一次死亡动画,并将碰撞器的isTrigger设置为True(这时为了以后计算敌人死亡后会留下什么宝物准备的),并将rigidbody毁掉,免得敌人“哗”地一下,就掉得不见了。 

 

运行游戏,查看一下效果。不出所料的话,应该是没问题了。 

不过,这里有那么点问题。前面我将在Update函数中调用的GetState函数放在了判断敌人是否在Idle状态的else语句里面了,也就是说,这样一来,如果敌人处于idle状态,就不会发生生命值同步了,那么敌人就不会减生命了…这里只需要把GetState函数移动到if(!m_isDead){}前面就行了。 

如图: 

 

接下来。我觉得应该先把下边那个提示栏弄出点东西来,不然老那么光秃秃的也不好看。现目前能有什么提示信息呢?大概是生命减少之类的了吧。这个我就使用富文本了,节约、美观。 

 

界面的布局的最后效果就是这样的了: 

 

首先,点击提示栏,新建一个富文本框,就像如图中那般大小即可,将Anchor全都勾选,然后随便打几个字以作实验。 

 

同时在它的旁边再新建一个ScrollBar在Anchor中勾选Right、Top和Bottom,在这个ScrollBar中再新建两个 Sliced,分别命名为Thumb和Track,都是将Anchor中的勾选完了的。选择好两个Sliced的背景,将Track缩放至 ScrollBar一样大小,而Thumb的宽跟Track一样,高则取一个合适的值即可。最后将这两个Sliced分别拖放给ScrollBar的 Thumb和Track(要选择ScrollBar的形式为Verticle),再勾选富文本框里面的Allow Scroll,将前面做好的ScrollBar拖给他,就完成了。这里为了美观起见,我还新建了一个Sliced作为富文本框的背景,就是这样! 

运行游戏,东西差不多都没问题,只是符文本框在拖动的时候,太过于缓慢了,想要快一点的话,就还要改一改ScrollBar中的Increment,改成20就比较快了: 

 

 

如果光有这些的话,当然不行。他还必须得实时显示游戏中的数据才可以。所以下面,继续写脚本了! 又是折腾好久,以下内容,依然是实验过后的最终结果,其他就不详叙了。 

 

功能以经达到,现在慢慢道来:接上面的内容,实现提示栏的内容显示额方法,原本我是想新建一个脚本,理应数据绑定来实现的,最后失败了,改成了直接修改原来的BattleChange脚本来实现。 

 

首先吧,新建一个标签,我明名为“TipsBar”,然后将这个标签指定给了提示栏的那个富文本框。接下来打开BattleChange脚本,在最前面定义一个富文本的脚本对象: 

private dfRichTextLabel m_dfTxet;//定义提示栏的脚本对象 

 

在这里原本因为Start函数没有用到,我是把它删掉了的,所以现在还得定义回来,然后在Start函数中获取对象: 

void Start()
{
m_dfTxet=GameObject.FindGameObjectWithTag("TipsBar").GetComponent<dfRichTextLabel>();//获取提示栏的脚本对象

} 

 

最后,就可以在脚本里对提示框的富文本内容进行修改了: 

public void Damage(int m_attack)
{
if(m_life>0)
{
m_realAttack=(int)Random.Range(m_attack-m_attack*0.25f,m_attack+m_attack*0.25f);//随机伤害值,范围在正负25%以内
//Debug.Log ("伤害:"+m_realAttack);
if(m_realAttack-m_defense>0)
{
m_life-=(m_realAttack-m_defense);
m_dfTxet.Text+=("<p color=red>"+m_name+"被狂殴了一顿,生命减少"+(m_realAttack-m_defense)+"点</p>");
if(Random.value>0.9f)
{
m_dfTxet.Text+=("<p color=white>看看上面那鲜红的字迹,就知道你造就了多少杀戮了!</p>");
}
}else
{
m_life-=1;
m_dfTxet.Text+=("<p color=red>"+m_name+"皮糙肉厚,生命只减少了"+(m_realAttack-m_defense)+"点</p>");
if(Random.value>0.9f)
{
m_dfTxet.Text+=("<p color=white>看看上面那鲜红的字迹,小心被咔嚓掉哦!</p>");
}
}
if(m_life<=0)
{
m_life=0;
m_isDead=true;
m_dfTxet.Text+=("<p color=red>"+m_name+"惨遭杀戮,抽搐了几下,死掉了........</p>");
}
}
} 

 

这里我除了定义显示的正常攻击内容外,还添加了些许奇怪的文字,也算是增加点趣味罢。 

现在运行游戏,就会看见如下结果了: 

 

改名字这点好像不如先前想的那么麻烦,只要在PlayerControl和Enemy脚本的Start函数中加上一句话就可以咯额:m_changeState.m_name=m_name; 

现在就ok了 

 

小白如何通过自学Unity3D找到游戏开发工作 这里指的小白,说的是从来没有开发过游戏,也没有接触过编程的人。如果之前有编程基础的话稍微熟悉熟悉unity的C#语言就可以了,所以这里就不涉及这些了。   1、可以网上看一下Unity的视频教程来快速入门,要选择注重实战的视频教程。像最近的paws3d平台的视频就不错。 2、在用Unity开发项目的过程中,遇到待解决的问题,直接网上搜问题、查资料(这也是好多大神的成功之道吧),然后不耻下问,... 阅读详情

相关推荐

2018年Unity3D游戏开发前景预测

随着移动手机游戏盛行,游戏开发人才供不应求,如何成为一名优秀的开发者?掌握Unity3D开发技术是不可跳过的一环。随着移动互联网的发展,移动端游戏日益盛行,据了解,Unity全球开发者超过300万,1/4在中国,超过5000家游戏公司和工作室在使用Unity3D开发。学习Unity3D游戏开发,未来职业发展前景非常可观。Unity 3D是什么?Unity 3D到底是什么?如此受欢迎,市场占有率如此

码农王也的博客 1万+

unity 弹窗提示_【原创】Unity3D 消息提示框

本文永久地址:http://www.omuying.com/article/60.aspx,【文章转载请注明出处!】消息提示框,大家都并不陌生,他们的主要作用是给予用户提示,用 NGUI 来做消息提示框并不难,只是有些地方需要额外注意。先来搭建测试环境,如图:因为消息提示框只有用户触发之后都会消失,所以需要设置背景遮罩的属性,用来避免显示消息提示框的时候,用户还可以操作其他的行为,如图:这儿需要注...

weixin_39616071的博客 3515

Unity3D LDB游戏工作室 教程(一)

以上就是Unity Hub的初步教学,后续我会继续出关于Unity3D的教学指导,有希望开发游戏的朋友也可以相互学习,希望多多支持!曾睿祺你隔壁!!!!!!!!!!!!!!!

weixin_43680913的博客 2214

unity游戏中提示信息如何实现_《游戏设计模式》(游戏编程模式)全书笔记+Unity实现...

Unity实现(Github地址):笔记部分以下部分只包含笔记,具体实现及项目说明可查看Github笔记中很多都是个人理解,目的是尽量让原本抽象的概念更易懂一些关于书名——书名直译是《游戏编程模式》,但在中文版致谢页中,被翻译成了《游戏设计模式》,“设计模式”一词来源于GOF。此书(GPP)虽与编程有关,但更本质上是设计思想,所以更倾向“设计模式”这个翻译链接是什么(个人理解)将命令封装,与目标行...

weixin_39634438的博客 739

Unity3D游戏开发之如何做个好主程

在Unit3D游戏开发中如何做一个好的主程序呢在走向下一个驿站的时候,我在想,我还能留下些什么,为那些没有经历过或者经历过的战友们。回顾自己几年的职业生涯,多是在平淡中度过,积累的无非是在游戏开发中经验和心得。我想如果把自己的经验和心得以及一些思考能与天下的战友们一起共享,也是一件非常有价值的事,因为可以为别人打开思考的心扉,可以为别人产生思想的火花。我想在离别之际,就如何做一个好的主程序这个主题,

microsoftMSDNNET的博客 5369

Unity实现通用的信息提示框

1、创建一个信息提示框添加InfoTipsFrameScale脚本(然后将其制作为预制体) 2、编写该信息提示框的控制脚本 /*** * Title:"智慧工厂" 项目 * 主题:全局层:提示框的动画效果 * Description: * 功能:实现提示框的缩放功能 * Date:2018 * Version:0.1版本 * Author:Coffee * Modify Reco...

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 5896

我做游戏开发这八年

我做游戏开发这八年简述与编程擦肩而过从图像设计到痴迷编程入门编程沉迷编程Java的图形编程就职游戏开发2011,第一次面试&实习生第一个游戏2012年,第二个重量级IP游戏2013年,转战手游与创业2014-2015,第一次创业2015,西山居和多益网络2016-2018,第二次创业2018至今,360游戏艺术(岂凡网络)技术总监 简述 这篇文章并不是想教会大家如何开发游戏,更不能教大家如...

游戏开发者 6万+

Unity组件开发--提示框

提示框UI组件 代码脚本:ToastPanel。

一个人的夏天 830

Unity3d游戏开发用哪个语言更好?

Unity3D是由Unity Technologies开发的一个全面整合的专业游戏引擎,软件集成了专业的渲染引擎和“所见即所得”的开发编辑界面,可快速创建具有强大视听效果的交互式3D内容。 unity3d开发语言用什么更好? Unity3d开发中常用的语言有三种可供选择的脚本编程语言:Java,C#以及Boo。 使用度更高的是前两种Java和C#,需要说明的javascipt不是网页的那个javascipt,是Unity自己变化过后的一种语言。 尽管它们各有各的优势与不足,但通常来讲C..

m0_59795095的博客 1万+

Unity3D多人游戏开发实战教程

Unity3D是一个功能强大的游戏开发引擎,它支持2D、3D、VR以及AR游戏的开发,并且提供了丰富的工具和组件来帮助开发者快速构建游戏原型。作为开发多人游戏的基石,Unity3D提供了物理引擎、动画系统、粒子系统等核心功能,这些都是构建高质量多人游戏所必需的。多人游戏的开发引入了网络编程的概念,意味着需要处理客户端与服务器之间的通信。开发者需要了解网络协议、数据同步机制、延迟处理等关键问题。

weixin_32311823的博客 1479

Unity3D中利用Lua语言提升游戏开发效率

本文还有配套的精品资源,点击获取 简介:Unity3D是一个跨平台的游戏开发引擎,支持2D和3D游戏的开发。Lua是一种轻量级的脚本语言,常被用作游戏开发的嵌入式脚本语言。在Unity3D中直接运行Lua,可以利用Lua的语法简单性、模块化和热更新特点,加速游戏开发流程。使用中间库如tolua可以实现Unity3D的C# API与Lua的交互,允许开发者在Lua脚本中直接调...

weixin_42589700的博客 2479

BDFramework:打造高效Unity3D游戏开发工作流

BDFramework是一款专为Unity3D游戏开发设计的强大工作流框架。它秉承“工业化、流水线化、专业化”的设计理念,旨在为开发者提供一个高效、便捷的商业游戏开发环境。BDFramework通过一系列精心设计的Pipeline,如BuildPipeline、PublishPipeline和DevOps等,确保了开发流程的顺畅和高效。此外,BDFramework还特别强调自动化和编辑器解决方案,

gitblog_00352的博客 820

Unity3D坦克游戏开发详解实战项目

htmltable {th, td {th {pre {简介:Unity3D是一款跨平台游戏开发引擎,广泛应用于游戏开发领域。本文围绕坦克游戏的开发流程,详细讲解从场景搭建、坦克控制、物理模拟、射击系统、用户界面到最终发布等完整开发过程。通过C#脚本编写和Unity内置组件实现坦克移动、旋转、射击与AI行为,结合性能优化与多平台发布策略,帮助开发者掌握完整的游戏开发技能,打造可玩性高的坦克对战游戏。

weixin_28999139的博客 879

Unity3D简单小游戏项目:快速上手Unity3D游戏开发的绝佳选择

Unity3D简单小游戏项目:快速上手Unity3D游戏开发的绝佳选择 【下载地址】Unity3D简单小游戏项目 这是一个基于Unity3D引擎开发的简单小游戏项目,专为初学者设计,旨在帮助您快速入门Unity3D游戏开发。项目包含了基础的游戏逻辑、场景搭建和角色控制功能,通过清晰的代码和结构,您可以轻松理解游戏开发的核...

gitblog_06701的博客 1100

Unity3D简易马里奥游戏开发指南

Unity3D是一个功能强大的游戏引擎,它为开发者提供了从2D到3D游戏开发的所有必要工具。Unity通过直观的界面和组件化系统简化了游戏设计过程,并支持跨平台发布。开始使用Unity3D的第一步是下载并安装Unity Hub和Unity编辑器。平台生成算法的核心在于随机性和可预测性的平衡。它需要根据玩家的游戏进程动态生成平台,同时确保玩家能够顺利通过。随机性:平台的大小、形状和位置可以使用随机数生成,使每次游戏的体验都独一无二。可预测性。

weixin_42430341的博客 888

Unity3D连连看游戏开发教程

本文还有配套的精品资源,点击获取 简介:Unity3D是一个广泛用于开发2D和3D游戏的跨平台引擎。本资源详细介绍了在Unity3D中构建连连看游戏的关键技术,包括关卡设计、C#编程基础、碰撞检测、交换逻辑、消除动画、游戏状态管理及UI设计与交互。通过实际案例,教程引导初学者深入理解并掌握三消游戏开发的各个重要环节。 1. Unity3D游戏开发基础 在现代游戏...

weixin_32005771的博客 1437

Unity3D游戏开发介绍

Unity3D游戏开发介绍 Unity3D Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。 Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 为什么要unity3D来开发游戏 unity3D是如今绝大多数游戏开发团队的首 选3D引擎,并且它在2D上的表现也及为优秀。它可以轻松解决很多其它引擎不能解决的问

qq_45768871的博客 5132

激光雷达+相机标定避坑指南:手把手教你用KITTI数据完成坐标转换

本文详细介绍了激光雷达与相机标定的实战指南,利用KITTI数据集完成精准坐标转换。从数据准备、工具链搭建到标定矩阵加载与验证,再到坐标转换流水线的工程实现,提供了全面的避坑技巧和工程实践建议。特别强调了多传感器融合中的常见问题及解决方案,帮助开发者提升自动驾驶和机器人感知系统的环境感知精度。

book8的博客 835

基于Unity3d的篮球类游戏开发

2.1Unity3D游戏引擎2.1.1Unity3D软件介绍Unity3D是一款由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等各种类型互动内容的多平台的综合型游戏开发引擎,可谓是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。

2301_79745346的博客 1125

Kafka 系列 —(17)Kafka 流式处理:Kafka Streams架构、使用场景、框架选择

本文介绍了KafkaStreams的架构特点、应用场景及与其他流处理框架的比较。KafkaStreams作为嵌入式分布式流处理库,其核心架构包含流处理器、任务、拓扑和本地状态存储,具备自动容错和伸缩能力。适用于实时监控、ETL、聚合、Join、物化视图等低延迟场景。与Flink、Spark相比,KafkaStreams适合简单架构和微服务,而Flink适合大规模处理,Spark更适合批处理。选择框架需根据具体场景需求,如微服务推荐KafkaStreams,大规模处理推荐Flink。

moton2017的博客 1631

STM32实现薄膜压力传感器数据采集(标准库和HAL库实现)

薄膜压力传感器采集压力数据

XiaoCaiDaYong的博客 3万+
上一篇: Unity3D 游戏技术开发之Native2D特性研究
下一篇: Unity3D技术之FBX 导出指南
Qst_Baron
博客等级 码龄12年 15粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值