我目前正在使用 iOS 上的 Sprite Kit 来确定它是否适合制作相对简单的 2D 游戏。
由于我的 ActionScript 背景,我很乐意在代码方面使用 Sprite Kit
但是有些东西我就是想不通。以纹理图集作为资源的动画节点非常耗费内存。我已经将地图集导入到我的项目中(纹理大小约为 35MB)。将纹理预加载到 RAM 中似乎没问题,但在我运行实际动画的那一刻,堆大小呈指数增长(从大约 80MB 到 780MB)
这是我的代码:
self.noahFrames = [[NSMutableArray alloc] init];
SKTextureAtlas *noahAtlas = [SKTextureAtlas atlasNamed:@"noahAnimati"];
int imgCount = noahAtlas.textureNames.count;
for (int i=1; i <= imgCount; i++) {
NSString *textureName = [NSString stringWithFormat:@"NoahMainMenuAnimation_%d", i];
SKTexture *temp = [noahAtlas textureNamed:textureName];
[self.noahFrames addObject:temp];
}
SKSpriteNode *noahNode = [self createSpriteWithName:@"noah" imagePath:@"Noah_main_menu_hd" positionXPath:@"MainMenu.Noah.x" positionYPath:@"MainMenu.Noah.y" scalePath:@"MainMenu.Noah.scale"];
[self addChild:noahNode];
//up to this point everything goes fine
[noahNode runAction:[SKAction repeatActionForever:
[SKAction animateWithTextures:self.noahFrames
timePerFrame:0.1f
resize:YES
restore:YES]] withKey:@"animatedNoah"];
所以我想我的实际问题是为什么应用程序在调用 SKAction 动画后变得如此严重的内存?我一定错过了一些相当明显的东西......