Android游戏中的倒数计时器
Posted
技术标签:
【中文标题】Android游戏中的倒数计时器【英文标题】:Countdown timer in Android game for points 【发布时间】:2017-07-10 01:40:56 【问题描述】:在 android 游戏中实现积分倒计时的最佳方法是什么,例如:用户失去所有积分,1 小时后他将获得 5 积分。 考虑到应用程序可能会被破坏以及运行时应用程序中将显示 5 个点的剩余时间,如何实现这一点! 注意:游戏很简单,不使用纯android引擎。
【问题讨论】:
【参考方案1】:当用户不在游戏中时,时间是否“运行”?如果它也在后台“运行”,只需存储游戏的开始时间,然后计算所有内容 (duration = *now* - start_time;
)。
如果计时器在后台停止,请以合理的精度存储总持续时间(如果奖金每小时变化,1 秒可能就足够了),并将 session_start 存储在 onGameResume 中,并从duration += *now* - session_start
重新计算 onGameStop 中的持续时间。
程序员提示:每当使用“时间戳”时,请使用 UTC 时间 [用于存储和计算](不是用户时区,因为它可以轻松更改,如果用户旅行/等)。时区调整的日期和时间是“视图格式”,在显示值之前完成,而不是值存储的一部分。
这种简单的实现很容易通过在运行游戏之前手动更改设备时间来作弊。如果它是更具竞争力的挑战,您可以考虑添加一些模糊的保护机制,例如存储已经发生的日期并将它们用于一些启发式检测操作(但请注意,设备本身可能很容易通过跳转 +-几分钟万一它的 RTC 非常不准确,电池耗尽了更长的时间,或者用户正在进入奇怪的时区(IIRC 有一些偏移量为 +-30 分钟),并且经验丰富的黑客也会禁用你的额外检查,所以不要花太努力了,有人会作弊)。
【讨论】:
以上是关于Android游戏中的倒数计时器的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Android RunOnUIThread 和 onTimedEvent 延迟/滞后(我正在尝试显示倒数计时器)