【发布时间】:2015-02-11 21:07:40
【问题描述】:
有些游戏的某些动作与时间相关。例如,如果用户玩游戏,每 24 小时就会获得一个积分……在我们关闭手机并在几个小时后回来后,计时器设置正确。
这是怎么做到的?必须有某种方法将当前时间写入持久存储然后从中读取?
我只是猜测它是这样的:
NSDate * now = [NSDate date];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"HH:mm:ss"];
NSString *newDateString = [outputFormatter stringFromDate:now];
然后是 newDateString 写入持久存储的部分。
另外,如果这是一种方法,如果用户在他的设备上手动更改时间会发生什么?我们可以依靠这个或其他一些方法来跟踪游戏中特定时刻之间的实时时间吗?
【问题讨论】:
-
也许定时器链接到服务器上的时钟?
-
我明白了。但是,例如,当没有服务器时如何做到这一点?我在离线模式下玩过游戏,(iCloud也关闭了)并且计时器仍然有效......我不确定游戏是否依赖于服务器时间或设备上的系统时间......
-
将开始时间写入 NSUserDefaults 并在游戏再次激活时处理经过的时间。为了防止用户弄乱他们设备上的时间,您可能必须与服务器通信才能获得准确的时间。
-
@sangony 服务器时间实际上是什么意思?哪个服务器?
-
这是一个JSON格式的time.jsontest.com
标签: ios timer sprite-kit nsdate