2

我正在制作游戏的路上。我正在尝试解决一个关于时间的问题。

玩家每十分钟获得生命(当所有游戏权利完成时)。(同时,我会像糖果迷一样在应用内出售生命)。游戏可以离线玩。当用户杀死应用程序时,我有时间并保存它。当他/她打开游戏时,通过减法获取当前时间并赋予生命。这是一个问题;

当用户杀死应用程序时,将时间调整为 1 小时后再次打开游戏(问题消失了,我正在付出生命)。

有什么办法可以解决这个问题。是否有任何用户无法更改的时间源(没有在线访问),我可以检索正确的时间。

ps:我会在iOS环境下编写游戏代码。iOS特定答案将不胜感激。

4

2 回答 2

0

我会使用真实时钟时间单位给出的“单调时间”。在 linux 上,这通常通过使用 clock_gettime(CLOCK_MONOTONIC, ×pec); 来完成。在 mac/ios 上,我认为 mach_absolute_time() 是您正在寻找的功能。请参阅其中一篇文章以进一步阅读

Mac OS X 中的clock_gettime 替代方案

OSX 上的单调时钟

CACurrentMediaTime() 使用 mach_absolute_time()。所以它应该是你最好的朋友,因为用户不可能改变它。除了它将在重新启动时重置(至少在 mac 上)。如果 mach_absolute_time 没有在重新启动时重置,那将是最好的情况......

于 2013-03-30T23:51:57.763 回答
0

我不相信有解决办法。

你想要的是一个相对时间,所以你可以考虑NSTimer在某个时间间隔后触发,但即使这样也行不通,因为当应用程序在后台(或被杀死)时,这样的计时器会失败或死亡。

最终,除非您使用设备外存储方法,否则您将受制于用户的日期管理。无论您使用哪种绝对时间方法(例如CFAbsoluteTimeGetCurrent),它都将取决于用户可以修改的系统时钟。

于 2013-03-30T22:49:51.620 回答