在Android游戏中为点数实现倒计时器的最佳方法是什么,例如:用户失去所有积分& 1小时后他将获得5分。 如何实现这一点考虑到应用程序可能会被销毁&运行时,应用程序中将显示5点的剩余时间! 注意:游戏很简单,不使用引擎只是android纯。
答案 0 :(得分:0)
时间"运行"用户不在游戏中,不是吗?如果它确实"运行"在背景中,只需存储游戏的开始时间,并从中计算出所有内容(duration = *now* - start_time;
)。
如果计时器在后台停止,则以合理的准确度存储总持续时间(如果奖励每小时更改1秒可能就足够了),并在onGameResume中存储session_start,并从duration += *now* - session_start
重新计算onGameStop的持续时间。 / p>
程序员提示:每当使用"时间戳"时,请使用UTC时间[用于存储和计算](不是用户时区,因为如果用户旅行等,它可以轻松更改)。时区调整的日期和时间是"查看格式",在显示值之前完成,而不是值存储的一部分。
通过在运行游戏之前手动更改设备时间,这种简单的实现很容易作弊。如果它是一个更具竞争性的挑战,你可以考虑添加一些混淆的防护机制,比如存储已经发生的日期,并使用它们进行一些启发式检测操作(但要注意设备本身可能很容易通过跳转+几分钟如果它的RTC非常不准确,电池耗尽时间较长,或者用户正在进入奇怪的时区(IIRC有一些偏移+ -30分钟),而经验丰富的黑客也会禁用你的额外支票,所以不要花太多精力去做,有人会欺骗它。)