我正在使用Cocos2D构建一个20级的益智游戏。当玩家首次打开游戏时,除了等级1之外,所有等级都应该被锁定。当玩家通过等级1时,应该启用等级2按钮等等......
我将CCButtons放在一个数组中,以便我可以在for循环中禁用未锁定的级别按钮(而不是每个单独的),但启用/禁用数组中的对象引用不起作用...
例如,这有效:_level19.enabled = false;
但这不起作用:levels[19].enabled = false;
以下是我将CCButton* _level1
初始化为CCButton* _level20
后的相关代码块。
-(void) didLoadFromCCB {
// Only set level buttons as enabled if player has unlocked that level
CCButton* levels[20] = {_level1, _level2, _level3, _level4, _level5, _level6, _level7, _level8, _level9,
_level11, _level12, _level13, _level14, _level15, _level16, _level17, _level18, _level19, _level20};
// CCButtons are automatically enabled so disable all buttons that haven't been unlocked
for (NSInteger j = [GameState sharedInstance].levelsUnlocked; j > 20; j++) {
levels[j].enabled = false;
}
}
任何帮助将不胜感激!
答案 0 :(得分:0)
j> 20似乎是一个错字。只有当j值大于20时,才想进入循环,然后从计数20的levels数组中获取一个值,这将导致超出范围的异常。
我猜,这应该对你有用
for (NSInteger j = [GameState sharedInstance].levelsUnlocked; j < 20; j++) {
levels[j].enabled = false;
}