Основная ошибка Sprite Atlas, созданная в папке XCAssets, не поддерживает пакетный рендеринг

Я начал использовать новый Атлас Sprite в папке XCAssets вместо моих атласов в папке проекта. Однако я заметил, что когда я делал это, мои узлы больше не обрабатывались пакетно, что приводило к большому количеству неэффективных вызовов отрисовки. Это полностью побеждает цель использования атласа!

Чтобы было ясно, это код, который я использовал для получения атласа.

let atlas = SKTextureAtlas(named: "Sprites")

"Спрайты" - это Атлас спрайтов, созданный в папке XCAssets.

У кого-нибудь есть обходной путь, или я застрял, делая атласы Sprite Kit в папке проекта.

Я использую Xcode 7.2 beta.

Причина, по которой я хочу использовать новые атласы Sprite Kit, заключается в этой проблеме.

2 ответа

Решение

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

let atlas = SKTextureAtlas(dictionary: ["Head":UIImage(named: "Head")!, "Body":UIImage(named: "Body")!])

Это, очевидно, просто обходной путь. Надеюсь, Apple исправит это в более поздних версиях Sprite Kit. Это довольно серьезная ошибка производительности, о которой должны знать все разработчики. Даже в примере проекта Apple используются новые атласы Sprite, так что вы думаете, что они будут работать в пакетном режиме.

Обновление 1 Ответ от Apple:

Спасибо, что сообщили нам об этой проблеме. В настоящее время мы расследуем причину и будем исправлять ее в будущих обновлениях iOS. Между тем, вы можете применить два обходных пути: 1. Создать и использовать текстурный атлас в папке.atlas. 2. Продолжение использования текстурного атласа в каталоге ресурсов, но с целью развертывания, установленной на iOS 8.0.

Обновление 2, по словам Apple, возможно, было исправлено в iOS 10. Идем к расследованию.

Кажется, это исправлено в iOS 10. Единственное, что раздражает, это то, что у вас не может быть двух изображений с одинаковыми именами, даже если они находятся в разных атласах.

Редактировать: это исправлено только в iOS 10. Если вы работаете в iOS 9, происходит сильная утечка памяти, которая может привести к сбою приложения.

Другие вопросы по тегам