我创造了一个类似于飞鸟的游戏,但添加了硬币元素。我有高分,但我无法弄清楚如何让硬币得分起作用。当玩家重新开始游戏时,我希望将硬币分数与之前的最佳硬币分数相加。目前,我的代码仅显示之前的最佳硬币分数,并且在玩家重新开始游戏时不会单独添加硬币分数。如何更改代码以显示收集的总硬币而不是最佳硬币分数?
- (void)didLoadFromCCB {
[self loadSavedState];
}
-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair hero:(CCNode *)hero coin: (CCNode *)coin {
_coins++;
if (_coins > _bestCoin) {
_bestCoin = _coins;
[self saveState];
}
[self loadSavedState];
return TRUE;
}
//write for coin
- (void)saveState {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:_bestCoin forKey:@"bestCoin"];
[prefs synchronize];
}
//read for coin
- (void)loadSavedState {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
_bestCoin = [prefs integerForKey:@"bestCoin"];
_coinLabel.string = [NSString stringWithFormat:@"%d",_bestCoin];
}
答案 0 :(得分:0)
如果您想在标签上添加硬币计数,只需在增加硬币数量的位置写下此行。
_coinLabel.string = [NSString stringWithFormat:@"%d",_bestCoin];
希望这会有所帮助.. :)
答案 1 :(得分:0)
因此,如果我理解你想要收集的硬币通过每个播放进行,而不是像高分一样。如果是这种情况,那么您的问题是每次玩游戏时当前的硬币数从0开始。这意味着在一次会话中收集超过_bestCoins之前,CCPhysicsCollision中的if语句不会被调用。
将loadSavedState更改为:
- (void)loadSavedState {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
_bestCoin = [prefs integerForKey:@"bestCoin"];
_coinLabel.string = [NSString stringWithFormat:@"%d",_bestCoin];
_coins = _bestCoin;
}