离线收益实现方法

本篇教程将教大家如何实现简单的离线收益
点我下载教学工程

实现原理

本教程主要使用两个组件:时间组件以及本地储存组件。

  1. 使用时间组件记录最近一次收益时间,并与当前时间比较,到达时间后再次进行收益,并更新收益时间。
  2. 通过本地储存组件记录收益时间、金币数量等数据,每次数据变化都更新存储的数据,并在下次游戏开始时重新获取。

搭建场景

开始场景与收益场景

通过本地储存组件获取数据需要一小段的时间,为了防止还未获得数据就正式开始游戏,我们将获取本地数据的场景与游戏主场景分开。

建立全局变量

建立4个全局变量

  1. 金币:用于直观显示当前收益
  2. 首次游戏:初始值为1,如果首次进入游戏,本地储存并没有数据,需要手动设置上一次收益时间为当前时间。
  3. 上次收益时间:本教程中单位为毫秒,通过时间组件获取
  4. 每秒收益:每秒钟增加的金币数量

添加本地存储组件和时间组件


时间组件勾选全局对象、使用当地时区

游戏开始前获取本地数据

在【开始场景】中,当游戏开始时,从本地储存数据中获取金币、首次游戏、上次收益时间

如果是第一次游戏,本地储存中没有该条目,则不做任何处理,直接使用变量的默认值开始游戏。
如果获取到,将本地存储的值设置到对应的变量中。

在初始化工作完成后,点击按钮,进入收益场景。
新建按钮,拖入场景中,当按钮被按下时,跳转至【收益场景】

计算收益

进入【收益场景】

当场景开始时判断,如果是第一次进行游戏,将上次收益时间设置为当前时间。因为变量的默认值是0,为了确保能够正确的计算当前时间和上次收益时间的时间差,需要手动进行一次设置。
同时将变量首次游戏设置为0,在更新变量后设置回本地储存中。

currentTimestamp获取的为从1900年到现在所经历的毫秒数。用当前时间减去上次收益时间,计算经过的秒数,如果大于1秒(本教程中每隔一秒进行一次收益),计算一次收益。
1秒等于1000毫秒,所以本教程中比较的是大于等于1000

建立子变量:local_相差时间,方便后续计算。

相差时间为当前时间减去收益时间。

根据相差时间计算获得的金币:int(local_相差时间/1000) * 每秒收益
在计算时,增加了向下取整的操作。如果相差1.5秒,只会计算1秒的收益。

更新上次收益时间。这里并没有直接赋值为当前时间,如果经过了9.5秒,只会在原来的时间上增加9秒的时间。

最后将更新的变量全部存储到本地

在正确写完上面的事件后,我们可以通过文本组件观察金币的变化。


预览可以看到,金币每隔一秒增长一次,当退出游戏等待一段时间重新进入后,金币会加上离线时间的收益。

不建议使用每隔X秒

用系统提供的每隔X秒的动作也可以实现一段时间进行一次收益,但是这种方式无法对离线时的收益进行处理,必须在多写一条专门针对离线时间的事件。 这种方式较为繁琐,不建议使用每隔X秒的方式实现挂机游戏的收益逻辑。