2015-02-10 29 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

相关问题