2015-09-16 4 views
0

Я пытаюсь передать свой результат от GameScene до GameOverScene. Я просто хочу установить текст метки в GameOverScene с моей переменной Score, которую я передал ей. Я использую это:пройти оценку между сценическим комплектом спрайтов

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?

Спасибо за любые ответы.

EDIT:

Хорошо у меня есть переменная Int Score; , Как подключить [email protected]"score" к этой переменной?

EDIT2:

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

С этими словами я Score: (null)

+0

http://stackoverflow.com/questions/18885490/spritekit-passing-data-between-scenes –

ответ

1

Прежде всего, необходимо инициализировать userData для GameScene в didMoveToView:

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); 
+0

Но как я могу дать свою переменную Score для моей оценки? Его не работает так, как у меня есть – Robin

+1

@Robin Вы уже установили целочисленный 'счет' в свой' userData' в ** GameScene **? – WangYudong

+0

Нет, как я могу это сделать? – Robin

Смежные вопросы