场景精灵套件之间的通过分数
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);
我正在尝试将我的分数从 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
:
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);