最近在用evkworld唤境引擎做游戏,怎么实现离线收益啊

就是有一些游戏有在线收益,我想做的是根据玩家离线时间获取相对应的游戏收益... 就是有一些游戏有在线收益,我想做的是根据玩家离线时间获取相对应的游戏收益 展开
 我来答
唤境
2019-08-21 · 超过33用户采纳过TA的回答
知道答主
回答量:34
采纳率:85%
帮助的人:39.4万
展开全部

实现原理

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

  • 使用时间组件记录最近一次收益时间,并与当前时间比较,到达时间后再次进行收益,并更新收益时间。

  • 通过本地储存组件记录收益时间、金币数量等数据,每次数据变化都更新存储的数据,并在下次游戏开始时重新获取。

  • 搭建场景

    开始场景与收益场景

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

    请点击输入图片描述

    建立全局变量

    建立4个全局变量

    请点击输入图片描述

  • 金币:用于直观显示当前收益

  • 首次游戏:初始值为1,如果首次进入游戏,本地储存并没有数据,需要手动设置上一次收益时间为当前时间。

  • 上次收益时间:本教程中单位为毫秒,通过时间组件获取

  • 每秒收益:每秒钟增加的金币数量

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


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

    请点击输入图片描述

    游戏开始前获取本地数据

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

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

    请点击输入图片描述

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

    请点击输入图片描述

    计算收益

    进入【收益场景】

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

    请点击输入图片描述

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

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

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

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

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

    请点击输入图片描述

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

    请点击输入图片描述

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


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

    请点击输入图片描述

    不建议使用每隔X秒

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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式