最近在用evkworld唤境引擎做游戏,怎么实现离线收益啊
实现原理
本教程主要使用两个组件:时间组件以及本地储存组件。
使用时间组件记录最近一次收益时间,并与当前时间比较,到达时间后再次进行收益,并更新收益时间。
通过本地储存组件记录收益时间、金币数量等数据,每次数据变化都更新存储的数据,并在下次游戏开始时重新获取。
金币:用于直观显示当前收益
首次游戏:初始值为1,如果首次进入游戏,本地储存并没有数据,需要手动设置上一次收益时间为当前时间。
上次收益时间:本教程中单位为毫秒,通过时间组件获取
每秒收益:每秒钟增加的金币数量
搭建场景
开始场景与收益场景
通过本地储存组件获取数据需要一小段的时间,为了防止还未获得数据就正式开始游戏,我们将获取本地数据的场景与游戏主场景分开。
请点击输入图片描述
建立全局变量
建立4个全局变量
请点击输入图片描述
添加本地存储组件和时间组件
请点击输入图片描述
游戏开始前获取本地数据
在【开始场景】中,当游戏开始时,从本地储存数据中获取金币、首次游戏、上次收益时间
如果是第一次游戏,本地储存中没有该条目,则不做任何处理,直接使用变量的默认值开始游戏。
如果获取到,将本地存储的值设置到对应的变量中。
请点击输入图片描述
在初始化工作完成后,点击按钮,进入收益场景。
新建按钮,拖入场景中,当按钮被按下时,跳转至【收益场景】
请点击输入图片描述
计算收益
进入【收益场景】
当场景开始时判断,如果是第一次进行游戏,将上次收益时间设置为当前时间。因为变量的默认值是0,为了确保能够正确的计算当前时间和上次收益时间的时间差,需要手动进行一次设置。
同时将变量首次游戏设置为0,在更新变量后设置回本地储存中。
请点击输入图片描述
currentTimestamp获取的为从1900年到现在所经历的毫秒数。用当前时间减去上次收益时间,计算经过的秒数,如果大于1秒(本教程中每隔一秒进行一次收益),计算一次收益。
1秒等于1000毫秒,所以本教程中比较的是大于等于1000
建立子变量:local_相差时间,方便后续计算。
相差时间为当前时间减去收益时间。
根据相差时间计算获得的金币:int(local_相差时间/1000) * 每秒收益
在计算时,增加了向下取整的操作。如果相差1.5秒,只会计算1秒的收益。
更新上次收益时间。这里并没有直接赋值为当前时间,如果经过了9.5秒,只会在原来的时间上增加9秒的时间。
请点击输入图片描述
请点击输入图片描述
在正确写完上面的事件后,我们可以通过文本组件观察金币的变化。
预览可以看到,金币每隔一秒增长一次,当退出游戏等待一段时间重新进入后,金币会加上离线时间的收益。
请点击输入图片描述
不建议使用每隔X秒
用系统提供的每隔X秒的动作也可以实现一段时间进行一次收益,但是这种方式无法对离线时的收益进行处理,必须在多写一条专门针对离线时间的事件。 这种方式较为繁琐,不建议使用每隔X秒的方式实现挂机游戏的收益逻辑。