【发布时间】:2013-01-31 22:56:27
【问题描述】:
我正在使用 Cocos2D for iOS,但您很可能不必熟悉 Cocos2D,只需 Obj-C 即可回答我的问题。
我在开发这款游戏时有一个敌人类,我已经使用了很长时间,但现在它已经达到了一个复杂的程度,我需要做一些事情来使它更有条理和可读性。
它目前的工作方式是这样的:我有一个敌人类,我分配了一定次数并插入到一个可变数组中。然后我可以随时翻阅那个可变数组。当敌人类被分配时,它也被引导初始化并传递一个敌人名称的字符串。在它的 init 中有一系列 if/if else 语句检查敌人名称并为其设置正确的值。这工作得很好,除了设计方面,当我添加越来越多的敌人时,查看所有这些名称会变得非常混乱。
我现在想做的是从所有不同敌人的敌人类别中分离出来。我需要访问敌人的属性,就像访问该类的其他类型的敌人一样。
现在在敌人类初始化中我有类似的东西:
-(id) initWithEnemy:(NSString *)kind {
if([kind isEqualToString:@"enemyName"]){
//set values
}
else if([kind isEqualToString:@"anotherEnemyName"]){
//set values
}
//etc, etc..
}
现在我想让这个设定值发生在其他文件中。每个敌人的一个或一组头文件/主文件。所以在 initWithEnemy 中,我想也许我可以从传递的“kind”字符串中分配一个敌人名称类。不确定我是否可以使用 NSClassFromString。我已经对其进行了一些试验,但我不确定如何像以前那样访问类属性。即使我确实以与以前相同的方式访问属性,这是否意味着所有敌人名称类都必须具有相同数量的属性?
【问题讨论】:
标签: objective-c cocos2d-iphone subclassing