前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Unity】瞎做个宝石迷阵吧!(4)——记分与读取

【Unity】瞎做个宝石迷阵吧!(4)——记分与读取

作者头像
ZifengHuang
发布2020-07-29 15:28:24
4970
发布2020-07-29 15:28:24
举报
文章被收录于专栏:未竟东方白未竟东方白

再再再接上篇【Unity】瞎做个宝石迷阵吧!(3)——宝石消除

终于来到了尾声,做了那么多准备,就差把这辣鸡的宝石迷阵收尾了。游戏的主体部分我们已经做完,结尾便是简单的交互部分。在题图中我们可以看到棋盘的左边有计分区和计时区,现在来做这些。

首先是计分区,我们在上篇中已经预留了计分函数。我们在Bricks每次触发Boom函数时调用Scene中的score函数,而今我们在Scene中加入以下内容。

如截图所见,函数本身是很简单的,但是用到了之前没用过的东西——TextMesh。这个组件顾名思义是一个文本网格组件,可以让我们在物体上附带文本等东西。我们先这么写,然后在场景中新建一个空物体起名叫score,然后如图添加组件textmesh。

在Text框内我们先写上 Score:0,这是相当于要显示的东西的初始状态,在下面还有一些选项可以调整字体,大小,颜色,框大小等等属性。这里要说到如上图将框调的较小然后把字体调大可以使显示出来的字变得清晰。接着我们在场景中试着把它调整好位置和大小,然后在Unity中将我们这个物体的组件绑定到Scene脚本上。然后我们试试看游玩,应该就可以看到每次有砖块消除时,分数都会增加被消除的方块数。

做到这里,想必你也明白了计时器要怎么写了,和积分器一样的操作,只不过我们要利用Time.timeSinceLevelLoad操作来获取游戏的运行时间。在这里我们要先把时间转成字符串并进行简单的格式化,然后在每一帧(Update中)更新数据以达到显示计时的效果。

这个时候,你应该就会发现一个问题。很多时候我们开局都必须经历一些刚刚随机好的方块的空白消除,这时候我们没有进行任何操作也不能操作,但是分数依然提升了,时间也依然记录了,怎么解决这个问题?我其实也没有想出很好的办法,于是简单的想到,隐藏游戏开始时的自动消除过程,在消除后清空计时器与积分器不就可以达到一种全新开局的效果了。

所以我们引入两个新的变量loader和loadTime并把Scene的Update函数改成以下样子。

这里就能看出计时与计分的全貌了,首先是让loader作为等待时间,最少0.5s,然后我们利用上次文章中说到的wait函数的maxIndex变量来表现是否还有落下的物体,如果在0.5s内没有新的砖块需要落下,我们便认为已经没有砖块需要消除了。如果有的话(maxIndex不等于0),我们便在每一帧都保持loader为0.5直到消除结束。然后在等待loader减少到0的途中,我们用loadTime变量来保存读取的时间,直到读取结束loader<=0时,我们将score变为0并让我们显示出来的时间减少loadTime时间再输出,这样我们便能看到时间从0开始计时且分数从0开始纪录了。

在这里我们发现一个新的Object:Loading。由于我们在刚才的读取(消除)过程中,我们并不希望用户看到这个画面,所以我们可以选择将一张图片,或者一段读取动画先放在整个画面的前方,挡住用户的视野,然后在读取结束后通过SetActive(false)来关闭这个Object的显示(与运行)。

再试着运行游戏,我们便能看到这次一开始画面有读取界面挡住视线,在读取完能看到正常的分数与时间了,依此我们也可以来做一些胜利条件之类。

但是,游戏到此还远没有结束,还有许多问题有待解决。当我们不断地消除砖块,就有可能发生没有方块再能消除的状态,那怎么办呢?在这里我使用最简单的方法。在棋盘的左上角放置一个重启键,当按下时重新载入整个关卡,甚至包括分数!这样的方法简单粗暴,几乎没有实用性,仅当练习信息的通信和重载关卡函数的使用吧。

利用SendMessage函数,物体与物体间可以互相触发公有的函数,这种触发方法虽然简单易使用,但是效率低下,不要太依赖为好。

到这里这个小游戏就算是结束了,如果有人真的看完了的话,也可以接着实现一些别的东西,异型的棋盘呀,交换操作的提示啊,炸弹等道具的实现啊,更好的各种各样的代码啊。我这系列的文章也不过是个思路,也很不实用,只希望能带来点纪录罢了。

最后老样子放上整个工程,里面还包括一个小型的连连看,也可以去看看代码,谢谢!

链接:http://pan.baidu.com/s/1slUbhud 密码:a6gp

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未竟东方白 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档