私はiOS用のCocos2Dを使用していますが、おそらくCocos2Dに精通している必要はなく、私の質問に答えるにはObj-Cだけです。
長い間使ってきたこのゲームの開発中に敵のクラスがありましたが、今では複雑になり、より整理されて読みやすくするために何かをする必要があります。
現在の動作は次のとおりです。特定の回数割り当てて可変配列に挿入する敵クラスがあります。その後、いつでもその可変配列をめくることができます。敵のクラスが割り当てられると、敵の名前の文字列を初期化して渡すように指示されます。initには、敵の名前をチェックして適切な値を設定する一連のif /ifelseステートメントがあります。これは問題なく機能しましたが、デザイン的には、敵を追加するときにこれらすべての名前を調べるのが非常に混乱しました。
私が今やりたいのは、すべての異なる敵の敵クラスからサブクラスを作成することです。そのクラスの他の種類の敵と同じように、敵のプロパティにアクセスする必要があります。
現在、敵のクラスの初期化では、次のようなものがあります。
-(id) initWithEnemy:(NSString *)kind {
if([kind isEqualToString:@"enemyName"]){
//set values
}
else if([kind isEqualToString:@"anotherEnemyName"]){
//set values
}
//etc, etc..
}
今、私はこの設定値を他のファイルで発生させたいと思っています。1つ、または各敵のヘッダー/メインファイルのセット。そのため、initWithEnemy内では、渡された「kind」文字列から敵の名前クラスを割り当てることができるのではないかと考えていました。NSClassFromStringを使用できるかどうかわかりません。少し実験しましたが、以前のようにクラスのプロパティにアクセスする方法がよくわかりません。以前と同じ方法でプロパティにアクセスしたとしても、それはすべての敵の名前クラスがすべて同じ量のプロパティを持っている必要があることを意味しますか?