0

我必须上课,生存和HUDLayer。在我的 HUDLayer 中,我有一个 SneakyButton,使用该按钮我在 Survival.m 中调用了一个名为 -(void)fire 的方法,但是当我调用该方法时,我收到错误消息CCSpriteBatchNode: resizing TextureAtlas capacity from ,并且我知道该方法正在被调用,因为我检查了一个 NSLog()

-(void)fire {
NSLog(@"Fire");
}

在我的日志中,它返回 Fire 以及那个奇怪的警告。当我收到警告时,fps 下降到 30 左右。有人有什么建议吗?

4

1 回答 1

1

这是你可以在 cocos2d 源代码中找到的关于调整纹理图集大小的内容:

// if we're going beyond the current CCTextureAtlas's capacity,
// all the previously initialized sprites will need to redo their texture coords
// this is likely computationally expensive

这是对正在发生的事情的解释:

精灵的内部数组正在增加,因为您正在向批处理添加更多精灵(日志在那里只是为了让您知道调试版本)。

子节点也计入达到精灵的容量限制。

您可以尝试为批处理节点设置更高的限制:

[CCSpriteBatchNode batchNodeWithFile:@"myAtlas.png" capacity:100]; // capacity for 100 objects

以减少这种情况发生的频率。

于 2013-01-27T10:55:46.713 回答