使用纹理图集时,SpriteKit中的内存使用率很高

时间:2013-12-04 14:23:59

标签: objective-c sprite-kit

我有100个纹理,每个纹理大小约为100 kb,我想创建一个SKAction,用25fps动画这些纹理4秒,并永远循环动作。我正在从地图集中加载它们(或者几个,因为Xcode警告我它将地图集拆分为9)。

问题是当我运行动作时,内存使用量从4增加到150 mb。前三个步骤中的一切都很正常。资产总规模约为12百万英镑。

多地图集的使用(Xcode在编译时拆分它们)会导致这个问题吗?

// Load the frames to an array
NSArray *sTreesRightAnimationFrames = ITBLoadFramesFromAtlas(@"s01-trees-right", @"s01-trees-right-", 100);
// Create the action
SKAction *sTreesRightAction = [SKAction animateWithTextures:sTreesRightAnimationFrames timePerFrame:1.0f / 25.0f];
// Create the forever action
SKAction *sTreesRightForeverAction = [SKAction repeatActionForever:sTreesRightAction];

// Preload the textures and run the action
[SKTexture preloadTextures:sTreesLeftAnimationFrames withCompletionHandler:^{
    [treesLeft runAction:sTreesLeftForeverAction];
}];

1 个答案:

答案 0 :(得分:3)

尺寸是文件大小,我猜?因为它们没有告诉您给定图像的纹理将使用多少内存。要计算任何给定(图集)图像的图像,请使用:

width x height x (color bit depth / 8) = size in bytes

例如:

1024 x 1024 x (32 / 8) = 4194304 Bytes = 4 Megabytes