У меня есть 100 текстур, каждый размером ~ 100 кб, и я хочу создать SKAction с анимацией этих текстур в течение 4 секунд с 25 кадрами в секунду и циклическим действием навсегда. Я загружаю их из атласа (или нескольких, поскольку Xcode предупреждает меня, что он разбивает атлас на 9).Использование высокой памяти в SpriteKit при использовании текстурного атласа
Проблема в том, что использование памяти увеличивается с 4 до 150 мб, когда я запускаю действие. Все нормально в первые три шага. Общий размер активов составляет ~ 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];
}];
С очень большими текстурами, это не будет иметь никакого значения, чтобы поместить их в атласе против в PNG изображения для каждого кадра. Что вы можете сделать, это уменьшить размер памяти в текстурах http://stackoverflow.com/a/38679128/763355 – MoDJ