我几乎和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;
}
我认为这是实现它的方法,但它不起作用。你能解释一下如何将浮动传递到另一个场景吗?
答案 0 :(得分:2)
您的问题是您在设置之前访问userData
。在你打电话的第一个场景中:
SKScene * nextScene = [[GameOverScene alloc] initWithSize:self.size];
现在你的
-(id)initWithSize:(CGSize)size
将被称为尝试访问尚未设置的userData
。将您的第二个场景中的代码移动到稍后的点- (void)didMoveToView:(SKView *)view