我有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];
}];
答案 0 :(得分:3)
尺寸是文件大小,我猜?因为它们没有告诉您给定图像的纹理将使用多少内存。要计算任何给定(图集)图像的图像,请使用:
width x height x (color bit depth / 8) = size in bytes
例如:
1024 x 1024 x (32 / 8) = 4194304 Bytes = 4 Megabytes