1

我有一个游戏,我需要在屏幕上呈现具有从右到左飞行路径的敌人(SKSpriteNodes)。我目前把它做成苹果的冒险游戏,有两个数组:一个是活跃的敌人,一个是不活跃的;两者的容量都是 10。当游戏需要添加一个敌人(通过更新方法)时,它会从非活动数组中取出一个,将其作为子元素添加并放入活动数组中。当敌人完成它沿着屏幕的路径或当它被摧毁时,我将它从活动数组中取出,从它的父级中删除,并将它放在非活动数组的索引 0 处。

代码:

添加敌人:

enemySN = [_asteroidsInactiveMArray lastObject];
[enemySN removeFromParent];
[_asteroidsInactiveMArray removeLastObject];
[_asteroidsActiveMArray addObject:enemySN];
[self addChild:enemySN];

移除敌人:

[enemySN died];
[_aliensActiveMArray removeObject:enemySN];
[_aliensInactiveMArray insertObject:enemySN atIndex:0];

我担心的是:目前,10 个敌人对于当前设置来说已经足够了,但是如果我想将屏幕上添加的敌人相乘,10 个就不够了。

当我没有任何剩余时,我应该保持这种风格并尝试修改数组的大小吗?我应该采取另一种方法并停止使用数组并在需要时初始化敌人吗?

4

1 回答 1

2

这是一个过早优化的例子。

您甚至还不知道您的问题可能是什么 - 它可能是内存使用情况,可能是搜索数组、添加/删除元素所花费的时间,在您遇到填充率限制之前,这根本不是任何问题在你的算法甚至变得有点低效之前,你就不会在屏幕上绘制更多的敌人。

你甚至可能发现你当前的方法比重新创建精灵慢,所以你改变了它。但随后这种新方法成为一个重要问题,因为它也没有扩大规模。您只能通过测试和测量来发现,但同样:过早的优化。

解决您实际遇到的问题;不要追逐“也许”。

至于 NSMutableArray 的大小不像 C 数组那样固定。如果您向其中添加更多项目,NSMutableArray 将动态增长,并在您删除项目时相应缩小。

于 2014-02-20T16:33:41.047 回答