Ios 如何在获得一定分数后解锁功能
好的,我想在游戏中获得一定分数后解锁一个新角色。我有我的高分机制设置,这样一个名为score number的整数在游戏结束时根据计时器系统识别分数,并将其设置为新的高分,假设你得到了更好的分数。然后它会将整数重置回0。这里的问题是,我不能说如果:整数读取超过30,然后解锁此功能,因为它重置为0。所以我的问题是:是否有其他方法可以在游戏中解锁此功能而不使用此方法。非常感谢 我不明白为什么在将int重置为0之前不能这样做:Ios 如何在获得一定分数后解锁功能,ios,objective-c,Ios,Objective C,好的,我想在游戏中获得一定分数后解锁一个新角色。我有我的高分机制设置,这样一个名为score number的整数在游戏结束时根据计时器系统识别分数,并将其设置为新的高分,假设你得到了更好的分数。然后它会将整数重置回0。这里的问题是,我不能说如果:整数读取超过30,然后解锁此功能,因为它重置为0。所以我的问题是:是否有其他方法可以在游戏中解锁此功能而不使用此方法。非常感谢 我不明白为什么在将int重置为0之前不能这样做: if (scorenumber == 30) { // unlock
if (scorenumber == 30) {
// unlock new level
} else if (scorenumber == 100) {
// unlock another level
}
假设您有两个不同的分数值,currentScore和highScore 将highScore保存到用户NSUserDefaults 在每轮结束时,将新分数与高分进行比较。如果新分数较高,请将其保存到high score NSUserDefaults键
然后使用highScore确定解锁的级别。有几种方法可以处理此问题。您可以使用位标志或特定标志来指示某些内容是否已解锁 例如,你可以这样做
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,因此您将多次通过scorenumber。此外,您假设他的每次得分为+1。情况可能并非如此。顺便说一句,是的,他说是基于计时器的,但是没有任何东西表明你可以从某个动作/事件中获得更多的分数。在这种情况下,他不能用他的highscore int而不是scorenumber来解锁if语句吗?假设我想取消隐藏一个按钮作为游戏的功能。在这个例子中,我应该把代码放在哪里?