微信小游戏制作工具中实现计时功能

文摘   教育   2024-10-30 16:15   山东  

嗨!大家好,我是小蚂蚁。


在游戏中经常会有需要倒计时的需求,例如倒计时 10 分钟可以获得 1 点体力,倒计时 1 小时后可以开启一个宝箱,或者是根据游戏的计时获得奖励等等。


今天就分享一下如何使用微信小游戏制作工具来实现在线计时器和离线计时器的功能。


在线计时器


首先布置一下场景。



如图的场景中,只有一个背景,以及一个基础的文字,我们将会使用基础的文字来显示倒计时。


实现倒计时功能的一个关键点就是进行时间的换算,如何将一定的“秒数”,转换成多少分,多少秒,然后最终使用“分:秒”的形式进行显示。


我们使用“除法”运算来计算当前的分钟数,然后使用“取余”运算来计算当前的秒数。

假设当前剩余的时间为 158 秒。

分钟数 = 向下取整(158 / 60)= 向下取整(2.6333) = 2

秒数 = 158 % 60 = 38


最终就可以将分钟数和秒数拼接起来,就是“2:38”,通常分钟和秒数都会使用两位数来显示,所以需要为分钟数前方添加一个 0 ,即最终的显示时间为 "02:38" 。

下面,我们就来看一下具体的实现。


首先创建几个全局变量。



“剩余时间”记录的是倒计时的总时间(以秒计),“分钟”和“秒数”记录的是根据剩余时间计算得到的分钟数和秒数,“倒计时数字”记录的最终要显示的倒计时。


接着,为“基础文字”添加倒计时的积木逻辑。



积木逻辑并不复杂,设置了倒计时的总时间 158 秒,计算出对应的分钟数和秒数,使用拼接积木将分钟数和秒数拼接起来,最终显示在文本上。


运行一下场景。



可以看到,我们将 158 秒换算成了 “02:38” 的形式正确的显示了。



让时间动起来


接下来,我们就让倒计时动起来吧!


接着在上方的积木下增加如下的积木块,让计时器跑起来。



我们使用了一个“重复执行”积木来处理跑动的倒计时,然后使用了一个“等待 1 秒”积木块实现了每间隔 1 秒去进行一次处理。至于时间的换算和显示则跟上方一样,如果还有剩余时间,则每隔 1 秒,处理显示一次。如果没有剩余时间了,则倒计时结束,退出循环。


运行一下,看看最终的效果。



计时器正常跑起来了。


使用函数来复用积木块


在计时器的积木块逻辑中,关于时间换算、拼接、显示部分的积木块,其实是使用了两次,对于这种情况,我们可以把这些会重复使用的积木块放到一个“函数”中。


我们创建一个“时间换算”的函数,然后把这部分可以复用的积木块放到函数中。



最终的倒计时的所有积木就变成了这样,看起来简洁了许多。




实现离线的计时器


通常我们在游戏中不光需要在线计时器,也需要离线的计时器。那么什么是离线的计时器呢?就是当玩家在退出游戏之后,计时器仍然能够计时。


举个例子,在“精致1010”有一个“种朵小花”的功能,玩家每隔 30 分钟就能够给植物浇一次水,通过浇水植物能够生长,并且生成金币。如果玩家在浇过一次水后,退出了游戏,然后等了 30 分钟后,再次回到游戏,此时计时应该是结束的,玩家可以再次为小花浇水。也就是说,虽然玩家退出了游戏,但是计时器并没有停止,仍然在计时,这就是离线计时功能了。



想实现这样的一个离线计时器的功能,我们需要借助 2 个东西。


第 1 个东西是“本地缓存”功能,它可以帮助我们把游戏中的数据缓存在本地,这样等玩家下次再打开游戏时,就可以通过“本地缓存”得到之前存储的数据。


第 2 个东西叫做“时间戳”,它指的是从某一时间开始经过的秒数。通常所说的时间戳指的都是“UNIX时间”。

维基百科对于UNIX时间的定义:

UNIX时间,或称POSIX时间UNIX类UNIX系统使用的时间表示方式:从UTC1970年1月1日0时0分0秒起至现在的总秒数,不考虑闰秒。


通俗点儿来讲这个“时间戳”指的就是从某一时间开始到此刻为止,一共经历了多少时间。我们怎样通过它来计算离线时间呢?比方说,我在 8 点钟退出了游戏,那么就可以在退出游戏前,把此时的“时间戳”做个记录,使用缓存功能把这个时间记录下来。然后,我 9 点钟的时候,又重新进入了游戏。这时就可以将当前的“时间戳”减去之前缓存的“时间戳”,就可以计算出离线的时间了。


这就是计算离线时间的原理了。其实并不是指游戏退出后,偷偷的在背后运行进行计时,而是通过“本地缓存”和“时间戳”这两样东西,通过计算来得到离线的那段时间。


下面,我们就来实现一下离线计时的功能。


首先,开启本地缓存的插件。



开启之后,就可以使用与本地缓存有关的积木块了。


接着,找到获取“时间戳”的积木块,它位于“计算”类别中的“当前时间的XX”积木块中,点击下拉,可选中获得“时间戳”。



最后,看一下实现的积木逻辑。



我们梳理一下整个逻辑,每次进入游戏时,首先去计算一下离线时间,通过“当前的时间戳”减去“之前缓存的时间戳”,然后通过换算,得到离线时间的总秒数,然后将“剩余时间”减去“离线时间”得到最新的“剩余时间”。如果“剩余时间”大于 0 的话,就开始倒计时,否则的话就表明倒计时结束。


这里需要注意的一点儿就是倒计时中新增的两块缓存积木,每当“剩余时间”发生变化时,我们都将最新的“剩余时间”和“时间戳”进行缓存。这样,不论何时玩家退出游戏,或者是进入到游戏的其他场景,缓存中的“剩余时间”和“时间戳”记录的都是最后的那一刻。


最后,我做了一个计时器的示例项目,里面包含了在线计时器和离线计时器功能的实现,已经开源到了社区,大家可以自行获取项目进行改编或学习。

计时器示例项目地址:

https://gamemaker.weixin.qq.com/#/game?game_id=lbM2VmZjhmYmUtZGY5ZS00ZjU1LWIwYjUtOGMyYzZhNDE2Mzc4


今天分享的内容就到这里了,希望这篇文章能够帮助你彻底的搞懂在游戏中实现一个计时器的原理以及方法。 





我是会做游戏也会教你做游戏的小蚂蚁,想学习游戏开发的话,关注我的公众号就对啦!


没有系统性的学习课程和路线?自己学习没氛围学不下去?遇到问题无人帮助即时解答?缺少经验不知该如何前行?......欢迎加入小蚂蚁的游戏开发年度课程,不只是一门课,而是围绕着学习游戏开发有关的一整套服务。帮助你用一年的时间学会做游戏,做出自己的游戏,让游戏为你带来睡后收入。欢迎来跟很多同学一起学习做游戏,一起探索游戏的更多可能。【点击这里】了解课程服务详情,【点击这里】可了解小蚂蚁能为你提供的其它课程和服务。


学员在学会做游戏之后,如果想要继续学习推广运营,我也准备了特殊的优惠,可以半价加入【小游戏推广践行群】,继续学习,打造自己的系统全面的游戏商业能力。


这里有很多热门的微信小游戏,长按下方二维码可打开游戏,据说会根据你的喜好推荐游戏哟!

欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识和内容,可以来围观。备注“学习做游戏”可免费领取原创的游戏开发教程资料大合集!非学员只接受付费咨询,不闲聊,望见谅。

长按识别关注

交个朋友!

·end·
—欢迎大家点赞,再看,分享—
—你的鼓励对我来说价值巨大—


小蚂蚁教你做游戏
跟小蚂蚁学习游戏制作开发和设计,学习游戏编程,这里有很多原创的游戏开发制作教程和独家课程,帮助你快速入门,使用无代码可视化的游戏制作软件,制作属于自己的游戏。
 最新文章