Я некоторое время использую SpriteKit в iOS; сейчас я разрабатываю приложение для Mac.
Я настроил атлас текстур, как обычно:
- Включите создание атласа текстур для как проекта, так и цели (я начал с шаблона «Приложение на основе документов», а не «Игра SpriteKit». У него другие настройки сборки).
- Перетащите все отдельные файлы изображений текстуры в папку,
- Переименуйте папку в "Something.atlas",
- Добавьте папку в проект,
- Во время выполнения создайте атлас по имени (например,
[SKTextureAtlas atlasNamed:@"Something"];
). - Получите отдельные «текстуры» по имени (например,
[_atlas textureNamed:@"MyTexture"];
) и создайте с нимиSKSpriteNode
экземпляра.
Я предварительно загружаю атлас асинхронно, но обработчик завершения никогда не вызывается (см. комментарии):
_atlas = [SKTextureAtlas atlasNamed:@"Something"];
if (!_atlas) {
NSLog(@"Error: Failed to create atlas!");
// This line doesn't execute, so atlas is not nil.
}
[_atlas preloadWithCompletionHandler:^(void){
// This block doesn't get executed either,
// so atlas loading somehow fails...
NSLog(@"Atlas Loaded!");
[self createSprites];
}];
Когда я проверяю содержимое пакета продукта сборки (например, MyApp.app), в подкаталоге ресурсов я вижу папку atlas ("Something.atlasc"), но он содержит только файл .plist без записей, а ресурсов изображений нигде нет... Так что же дает?
self
внутри блока - не лучшая идея? - person Nicolas Miari   schedule 30.05.2014