2015-02-10 37 views
-4

好吧,所以我想要在遊戲中獲得一定分數時解鎖一個新角色。我有我的高分機制設置,以便一個稱爲「分數」的整數在遊戲結束時識別分數(基於計時器系統),並將其設置爲新的高分(假設您的分數較高)。然後它會將整數重置爲0.這裏的問題是,我不能說如果:整數讀取允許說30,然後解鎖此功能,因爲它重置爲0.所以我的問題是:是否有另一個無需使用此方法即可在遊戲中解鎖此功能。非常感謝!如何在獲得某個分數後解鎖一個功能

回答

0

說你有兩個不同的分值,currentScore和高分。

將highScore保存到用戶NSUserDefaults。

在每輪結束時,將新分數與高分進行比較。如果新分數較高,則將其保存到高分NSUserDefaults鍵。

然後使用highScore確定什麼級別解鎖。

0

我不明白爲什麼你不能只是做這種方式您重置INT回到0之前:

if (scorenumber == 30) { 
    // unlock new level 
} else if (scorenumber == 100) { 
    // unlock another level 
} 
+0

這不會基於他寫的內容。得分重置爲0,所以你將多次傳遞'scorenumber'。另外,你假設他的得分每次都是+1。情況可能並非如此。順便說一句,是的,他說基於計時器,但沒有說你可能會從某些行動/事件中獲得「點數」。 – 2015-02-10 01:54:46

+0

在這種情況下,如果if語句解鎖,他不能使用'highscore' int而不是'scorenumber'嗎? – user3781632 2015-02-10 01:59:43

0

有幾種方法可以處理這個問題。您可以使用位標誌或特定標誌來指示是否有東西被解鎖。

因此,舉例來說,你可以做這樣的事情

typedef NS_ENUM(NSUInteger, Unlockable) { 
    UnlockableA = 1, 
    UnlockableB = 2, 
}; 

@property (nonatomic, assign) NSUInteger unlockables; 

// Code for checking score and unlockables. 
// Hardcoding these values is bad, but just doing this for convenience now 
if (self.scorenumber >= 30) { 
    if (self.unlockables & UnlockableA) { 
     // Unlock A 
     self.unlockables |= UnlockableA; 
    } 
} 

// Note this is not an else if, so you can award it in cases 
// if you had score numbers incrementing at arbitrary values 
if (self.scorenumber >= 100) { 
    if (self.unlockables & UnlockableB) { 
     // Unlock B 
     self.unlockables |= UnlockableB; 
    } 
} 

代碼沒有測試編譯,精度等

你必須確保堅持unlockables,這也意味着它讀在開始。

如果你去了特定變量的路線,你會做這樣的事情:

@property(nonatomic, assign) BOOL unlockedA; 

你可以從這裏找出休息。

另一種選擇是使用NSDictionary來保存BOOL(作爲NSNumber)。

還有其他方法可以做到,但這些都是低懸的水果方法。

+0

可以說我想取消隱藏一個按鈕作爲遊戲的功能。在這個例子中,我會在哪裏放置代碼? – Apalumbo 2015-02-10 14:53:15

相關問題