2014-04-26 108 views
6

我正在創建一款遊戲,我希望它具有可選擇關卡的關卡,然後讓關卡進行關卡遊戲。我只是想知道如何創建關卡並在用戶達到該關卡時進行保存。我想在ViewController.h中創建一個BOOL並在每個場景中調用它,例如LevelCompleted = YES;然後使用BOOL當玩家想扮演一個新的水平或重播以前的水平在iOS Sprite套件遊戲中創建關卡

或者,

我必須在每個場景中的BOOL,然後導入每個場景的頭文件到導航級場景,並使用BOOL來顯示級別是否被解鎖。

另外,爲了在應用程序關閉時保存BOOL的值,我使用NSUserDefaults嗎?

我已經搜索了很多關於這個教程,似乎無法找到任何。如果需要更多信息,請告訴我。

+0

你是完全沉迷於此還是你嘗試過一些可能的解決方案? – sangony

+0

完全難倒@sangony,我試過玩弄它,但似乎沒有任何工作,我應該以不同的方式接近它?是一個BOOL使用錯誤的東西? – user3576196

+0

如果你展示了一些你已經嘗試過的東西,並解釋它爲什麼不符合你的期望,你可能會得到更好的答案。 –

回答

2

有幾種方法可以做你想做的。我會給你一些提示和提示,以便你可以創建適合你遊戲的代碼。

首先記住MyScene是一個SKScene,默認情況下它是從SpriteKit項目模板中的View Controller中調用的。所以你可以創建儘可能多的SKScene類,只要你想有層次。每個SKScene類可以是一個級別。

您可以將您的第一個SKScene,MyScene變成主菜單,並添加用戶級別列表以供選擇。若要從主菜單(MyScene)到選定的水平,你可以使用這樣的事情:

SKScene *gameLevel1 = [[Level1 alloc] initWithSize:self.size]; 
SKTransition *reveal = [SKTransition doorsOpenVerticalWithDuration:1.0]; 
[self.view presentScene:gameLevel1 transition:reveal]; 

1級將是你SKScene類爲您的第一級的名。還有一些很棒的轉變可供選擇。您還可以根據您的需要包含scaleMode屬性。

正如LearnCocos2D已經指出的那樣,您可以使用數組或字典來存儲玩家的數據,例如項目,健康狀態和等級。除非您需要保存大量數據,否則NSUserDefaults是您的最佳選擇。這裏是如何將數據存儲與一個NSUserDefaults的例子:

NSString *valueToSave = @"Level 5"; 
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"levelReached"] 
[[NSUserDefaults standardUserDefaults]synchronize]; 

要讀取存儲在值NSUserDefaults的,你可以這樣做:

NSString *highLevel = [[NSUserDefaults standardUserDefaults] stringForKey:@"levelReached"]; 

您可以隨時寫入新的數據到NSUserDefaults的。所以如果玩家剛剛完成一個級別,請將其寫入NSUserDefaults。

+0

不客氣。快樂的編碼! – sangony

+0

@sangony你會在場景之間使用NSNotification來正確讓關卡場景知道達到了新的級別嗎? (僅適用於我自己的關卡系統) –

+0

這真的取決於您如何設置遊戲邏輯。我通常在玩家到達出口或其他一些表示關卡已經完成的目標後,在關卡末尾執行此操作。我想你可以使用NSNotification,但在我看來,這會使你的代碼比你真正需要的更復雜一點。但是,這一切都取決於你自己的代碼。 – sangony