あなたが探している解決策は、クラスをより効果的に使用することだと思います。私は現在、プレーヤーが 4 つの「廊下」で進行中のアクティビティを管理する必要があるゲームを持っています。各廊下は 3 つの「行」で構成され、各行にはさまざまな悪者、善人などが含まれています。スワイプで廊下を循環し、一度に 1 つの廊下しか表示されないため、各廊下は独自のハドレイヤーです。廊下に散らばる悪者の群れを管理することは悪夢であり、非常に非効率的でした。そのため、メイン関数にハードコードされた配列を多数持たずに、悪者をグループに分割する良い方法が必要でした.... 方法は次のとおりです。それをやった:
「self」内には 4 つのホール hud レイヤーがあり、各ホール内には NSMutableArrays である 3 つの行があり、各行内にはアクター タイプ (善人、悪人、残骸など) を表すいくつかの配列があります。
これらすべてをネストされた配列に入れると機能します。例:
NSMutableArray *badGuys;
NSMutableArray *goodGuys;
NSMutableArray *row1 = [NSMutableArray arrayWithObjects: badGuys, goodGuys];
(repeat for row2, row3)
NSMutableArray *hallWay1 = [NSMutableArray arrayWithObjects: row1, row2, row3];
NSMutableArray *mainGame = [NSMutableArray arrayWithObjects: hallway1, hallway2....
ただし、これには多くの明示的に定義された変数が必要です。これを行うためのよりクリーンな方法は、クラスを使用することです。
.h 内の RowClass.h/RowClass.m:
NSMutableArray *myGoodGuys;
NSMutableArray *myBadGuys;
次に、.m make で
-(NSMutableArray *) returnMyGoodGuys { return myGoodGuys };
HallwayClass.h/HallwayClass.m
RowClass *myRow1 = [[RowClass init] alloc];
RowClass *myRow2 = [[RowClass init] alloc];
RowClass *myRow3 = [[RowClass init] alloc];
NSMutableArray *allMyRows = [NSMutableArray arrayWithObjects: myRow1, myRow2, myRow3];
.m で:
- (NSMutableArray *) getRowNumber : (int)rowNumber { return allMyRows[rowNumber-1]; }
HallwayClass *hall1 = [[HallwayClass init] alloc];
それで、あなたが特定の廊下で善人を引き抜く必要があるとき
NSMutableArray *hall1row1GoodGuys = [[hall1 getRowNumber:1] returnMyGoodGuys];
配列に何かをする
[hall1row1GoodGuys retain];
または、foreach ループで処理する場合は、次のようにします。
foreach(RowClass *row in hallway1.allMyRows)
{
do stuff
}
また
for(i=0; i<4; i++)
{
RowClass *nextRow = hallway1.allMyRows[i];
stuff
}
クラスを定義することは長い間私を怖がらせましたが、考えすぎなければ実際には非常に簡単に作業でき、物事を整理するのに驚くべきことをします。
このいくつかからいくつかのアイデアを得ることができれば幸いです:3