阶段完成后保持奖金

时间:2014-05-17 00:48:34

标签: ios sprite-kit

我正在开发一个简单的游戏,你开始时有三种“特殊技能”。当你点击按钮时,你有两个等等,直到你没有。然而,当我进入一个新阶段时,我又回到了3.这是错误的,我想保持与第一阶段相同数量的“技能”。

我知道这种情况正在发生,因为下面的代码。我正在初始化initWithSize中的“权限”,每次加载我的阶段时都会调用它。

 -(id)initWithSize:(CGSize)size level:(int)level {
  if (self = [super initWithSize:size]) {

    power1=33;
    power2=3;
    power3=3;

    NSDictionary *config=[NSDictionary dictionaryWithContentsOfFile:
                          [[NSBundle mainBundle]pathForResource:
                           @"Levels" ofType:@"plist"]];

我编写了我的代码看起来像这样。 因此,如果它是0阶段,我的权力会被初始化为我的状态,当我移动到第1阶段时,它会继续。 然而,当我移到第一阶段时,我的力量是空白/零,因为如果我不在阶段零/空白,我不确定应该是什么条件

-(id)initWithSize:(CGSize)size level:(int)level {
  if (self = [super initWithSize:size]) {

 //   power1=33;
//    power2=3;
//   power3=3;

    NSDictionary *config=[NSDictionary dictionaryWithContentsOfFile:
                          [[NSBundle mainBundle]pathForResource:
                           @"Levels" ofType:@"plist"]];

    if (level==0) {
      power1=33;
      power2=3;
      power3=3;

    }

    _level=level;

游戏赢了

 GameLevelScene *newScene = [[GameLevelScene alloc] initWithSize:self.size
                                            level:_level+1];

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。我不知道您的完整代码,所以我认为使用NSUserDefaults可能是您案件中最安全的选择。

在关卡结束时,在进入下一关卡之前,将玩家属性写为NSUserDefaults,如下所示:

NSString *valueToSave = [NSString stringWithFormat:@"%i",someIntValue];
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"Power1"];
[[NSUserDefaults standardUserDefaults]synchronize];

然后在下一级的开头,您可以回读保存的值,如下所示:

NSString *savedValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"Power1"];
if(!savedValue)
{
    NSLog(@"no value saved");
} else {
    long someIntValue = [savedValue integerValue];
}

如果您对NSUserDefaults有些不熟悉,请阅读NSUserDefaults Class Reference