场景精灵套件之间的通过分数

pass score between scene sprite kit

我正在尝试将我的分数从 GameScene 传递到 GameOverScene。 我只想用我传递给它的变量 Score 设置 GameOverScene 中的标签文本。 我正在使用这个:

SKView *spriteView = (SKView *) self.view;
    SKScene *currentScene = [spriteView scene];
    GameOverScene *gameOverScene = [GameOverScene sceneWithSize:self.frame.size];
    [gameOverScene.userData setObject:[currentScene.userData objectForKey:@"score"] forKey:@"score"];
    [self.view presentScene:gameOverScene transition:[SKTransition doorsCloseHorizontalWithDuration:1]]; // animation

现在如何在我的 GameOverScene 中访问分数变量?

感谢您的回答。

编辑:

好的,我有一个变量 int Score; .如何将 objectForKey@"score" 连接到此变量?

编辑 2:

[score setText:[NSString stringWithFormat:@"Score: %@", [self.userData valueForKey:@"score"]]];

这样我得到分数:(null)

首先你需要在didMoveToView:

中为GameScene初始化userData
self.userData = [NSMutableDictionary dictionary];

之后,如果您想保存整数 score,请添加:

score = 100;    // assume your score is 100 now
[self.userData setObject:[NSString stringWithFormat:@"%d", score] forKey:@"score"];

在呈现下一个场景之前,像这样编辑您在问题中发布的代码:

SKView *spriteView = (SKView *)self.view;
SKScene *currentScene = [spriteView scene];
GameOverScene *gameOverScene = [GameOverScene sceneWithSize:self.frame.size];

// Initialize userData for the next scene
gameOverScene.userData = [NSMutableDictionary dictionary];
[gameOverScene.userData setObject:[currentScene.userData objectForKey:@"score"] forKey:@"score"];
NSLog(@"GameScene score: %lu", [[currentScene.userData objectForKey:@"score"] integerValue]);

[self.view presentScene:gameOverScene transition:[SKTransition doorsCloseHorizontalWithDuration:1]];

现在你应该看到你的新场景并在需要的地方检查分数:

int score = [[self.userData objectForKey:@"score"] intValue];
NSLog(@"GameOverScene score: %d", score);