я должен кэшировать текстуры в свойствах набора спрайтов?

Я использую атласы для изображений в своей игре. Я предварительно загружаю все свои атласы в начале моей игровой сцены с помощью SKTextureAtlas preloadTextureAtlases, что имело большое значение, когда я начал его использовать. Вот мой вопрос:

Должен ли я создавать свойство для каждой текстуры, которое будет применяться снова и снова к порожденным монстрам или спрайтам захвата? Или это совершенно ненужные накладные расходы, потому что я предварительно загружаю свои атласы в свою игровую сцену?

Ниже приведены 2 очень простых примера в классе Monster.

Текстура кэша:

- (id)initWithSize:(CGSize)size
{
    if (self = [super init]) {
        SKTextureAtlas * atlas = [SKTextureAtlas atlasNamed:monsterAtlas];
        self.monsterFighterTexture = [atlas textureNamed:@"monster-fighter"];
    }
    return self;
}

- (Monster *)monster
{
    Monster * monster = [Monster spriteNodeWithTexture:self.monsterFighterTexture];
    return monster;
}

Не кэшировать текстуру.

- (Monster *)monster
{
    SKTextureAtlas * atlas = [SKTextureAtlas atlasNamed:monsterAtlas];
    Monster * monster = [Monster spriteNodeWithTexture:[atlas textureNamed:@"monster-fighter"]];
    return monster;
}

person Gadget Blaster    schedule 18.01.2015    source источник
comment
Когда вы используете атлас текстур, каждая текстура, созданная с помощью [atlas textureNamed:@monster-fighter], будет ссылкой на один и тот же объект текстуры в памяти.   -  person    schedule 18.01.2015
comment
Чтобы расширить то, что уже сказал Okapi, после того, как вы загрузите атлас текстур и получите хотя бы одну сильную ссылку на него, атлас останется в памяти. Есть несколько способов сделать это. Например, вы можете создать синглтон для хранения всех ваших атласов или сделать их свойствами класса. Это действительно вопрос личных предпочтений.   -  person sangony    schedule 18.01.2015
comment
Отлично. Спасибо. Поэтому вместо кэширования отдельных текстур я должен просто кэшировать атлас в свойстве и обращаться к текстурам с помощью textureNamed.   -  person Gadget Blaster    schedule 18.01.2015