在场景之间传递一个浮点数

时间:2014-02-23 23:23:00

标签: objective-c

我几乎和this one有同样的问题。但它没有解释如何从字典中检索分数。我想将一个名为score的浮点数传递给另一个场景。

我的更新方法中包含以下代码:

if (lives == 0) {
    SKScene * nextScene = [[GameOverScene alloc] initWithSize:self.size];

    nextScene.userData = [NSMutableDictionary dictionary];
    NSNumber * scoreForDictionary = [NSNumber numberWithFloat:score];
    [nextScene.userData setObject:scoreForDictionary forKey:@"score"];

    [self.view presentScene:nextScene];
}

我在另一个场景中有这个代码:

-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {
        NSNumber * scoreNumber = [self.view.scene.userData objectForKey:@"score"];
        score = [scoreNumber floatValue];

        [self showScore];
    }
    return self;
}

我认为这是实现它的方法,但它不起作用。你能解释一下如何将浮动传递到另一个场景吗?

1 个答案:

答案 0 :(得分:2)

您的问题是您在设置之前访问userData。在你打电话的第一个场景中:

SKScene * nextScene = [[GameOverScene alloc] initWithSize:self.size];

现在你的

-(id)initWithSize:(CGSize)size

将被称为尝试访问尚未设置的userData。将您的第二个场景中的代码移动到稍后的点- (void)didMoveToView:(SKView *)view