2014-02-23 39 views
0

我幾乎有同樣的問題this one。但它沒有解釋如何從字典中檢索分數。我想將一個稱爲分數的浮點數傳遞給另一個場景。通過場景之間的浮動

我在我的更新方法如下代碼:

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

「它不起作用」是什麼意思? –

+0

第二個場景中的分數浮動未設置爲它在前一個場景中的值。 – user2255273

+0

它的設置是什麼? –

回答

2

您的問題是您在設置之前正在訪問userData。在您的第一個場景,你在呼喚:

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

現在你

-(id)initWithSize:(CGSize)size

將被稱爲試圖訪問userData尚未被設定。將您的第二個場景中的代碼移到稍後的點,例如- (void)didMoveToView:(SKView *)view

+0

這工作!非常感謝你! – user2255273