Если вы предварительно настроили SKAction, вам нужно предварительно загрузить SKTextureAtlas?

Предварительно установив сильные SKAction для всех моих анимаций в игре, фактические данные изображения кэшируются Sprite Kit для будущего использования. Что я пытаюсь понять, так это то, что если я настрою всю свою анимацию как сохраненные SKAction, есть ли смысл также предварительно загружать SKTextureAtlas, из которых они изначально были получены, я думаю, что нет, поскольку изображения для SKAction уже загружены в память?

for(NSUInteger index=1; index<=15; index++) {
    NSString *image = [NSString stringWithFormat:@"Drone_FLYING_%04ld", (long)index];
    SKTexture *texture = [SKTexture textureWithImageNamed:image];
    [[self  framesDroneFlying] addObject:texture];
}

[self setDroneFlyAction:[SKAction animateWithTextures:[self framesDroneFlying]          timePerFrame:DRONE_FLY_SPEED]];

Я догадываюсь об этом из примера Apple Adventure, в котором, хотя авторы используют множество SKTextureAtlas (ов), они не делают ни одного preloadTextureAtlases ни в одном из кодов.


person fuzzygoat    schedule 20.03.2014    source источник
comment
SK будет загружать текстуры на лету. Однако предварительная загрузка SKActions кажется слишком далекой, это легкие объекты, которые можно создавать на лету, и я держу пари, что получение их из хранилища будет примерно, если не дороже, чем создание нового действия для каждой анимации. Используйте более простой подход, пока вы не докажете фактическими измерениями, что он имеет значение и влияет на ваше приложение. В противном случае это преждевременная оптимизация.   -  person LearnCocos2D    schedule 20.03.2014
comment
но вы не хотите, чтобы текстуры загружались на лету в первый раз, когда ship_x появляется на экране, то, что я пытаюсь получить, — это лучший подход к предварительной настройке ресурсов, чтобы вы не попали в середине игры.   -  person fuzzygoat    schedule 20.03.2014
comment
Используйте метод предварительной загрузки SKTextureAtlas и сохраняйте сильную ссылку на объект атласа. Это сохранит все текстуры в атласе в памяти. Вы можете оставить приведенный выше код без изменений и вместо загрузки изображения оно будет искать в атласе - при условии, что вы правильно настроили атлас (т.е. папка .atlas со всеми ресурсами в качестве ссылки вместо группы, а не добавление файлов изображений с тем же имя в другом месте проекта).   -  person LearnCocos2D    schedule 20.03.2014
comment
Это очень хорошее объяснение, то, что мне давно было любопытно, и я не нашел окончательного ответа, вы должны добавить свой комментарий в качестве ответа, я уверен, что многим другим людям будет полезно знать это ... Много оценил.   -  person fuzzygoat    schedule 20.03.2014
comment
Как и примечание для тех, кто интересуется, папки ссылок в Xcode СИНИЕ, групповые папки - ЖЕЛТЫЕ.   -  person fuzzygoat    schedule 20.03.2014


Ответы (1)


Чтобы сохранить текстуры (атласа) в кэше, используйте метод предварительной загрузки SKTextureAtlas и сохраните сильную ссылку на объект атласа. Вот и все. Это сохранит все текстуры в атласе в памяти.

Вы можете оставить приведенный выше код без изменений и вместо загрузки изображения оно будет искать в атласе - при условии, что вы правильно настроили атлас (т.е. папка .atlas со всеми ресурсами в качестве ссылки вместо группы, а не добавление файлов изображений с тем же имя в другом месте проекта).

person LearnCocos2D    schedule 21.03.2014