我在Spritekit
编码游戏。在用户输掉游戏后,我想为用户的生活创造一种方式,以便在30分钟后补充
我创建了一个整数(称为Lives),每次用户输掉游戏时,它都会从整数中减去1
我只是不知道如何在30分钟过后补充用户的生活。我在NSObject
助手类中编写了以下代码,但它无效。
-(void)ReplenishLives{
NSDate *now = [NSDate date];
NSTimeInterval oldDateTimeInterval = [now timeIntervalSinceReferenceDate];
NSTimeInterval thirtyMinutes = 60 * 30;
if (oldDateTimeInterval > thirtyMinutes) {
Lives = 5;
}
}
-(void)CheckTime{
LifeTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(ReplenishLives) userInfo:nil repeats:YES];
}
答案 0 :(得分:1)
一个主要问题是,您计算的oldDateTimeInterval
不是上次用户丢失的时间(具体而言,您将其设置为等于从现在到2001年1月1日之间的时间间隔,格林尼治标准时间上午12:00。 timeIntervalSinceReferenceDate
为您提供自2001年1月1日格林尼治标准时间中午12点以来的时间,这不是您想要的。
我建议您使用NSLog()
来记录您的oldDateTimeInterval
,并确保其按您希望的方式运行。这将在控制台中打印您放入其中的任何内容。例如:
NSLog(@"old time interval %f", oldDateTimeInterval);
然后,您可能想要做的是保存NSDate
变量(可能在NSUserDefaults
中),该变量将保留用户上次失去游戏的时间。然后,您可以从该日期进行比较,而不是现在使用的无关比较。