Mac SpriteKit - невозможно создать атлас текстуры во время компиляции
Я использовал SpriteKit некоторое время в iOS; сейчас я разрабатываю приложение для Mac.
Я установил текстурный атлас как обычно:
- Включите генерацию текстурного атласа как для проекта, так и для цели (я начал с шаблона "Document Based Application", а не "SpriteKit Game". У него разные настройки сборки).
- Перетащите все отдельные файлы изображений текстуры в папку,
- Переименуйте папку в "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 без записей, и Ресурсы изображений нигде не найти... Так что же дает?
1 ответ
На самом деле, это не было рабочее пространство в конце концов. То же самое рабочее пространство / проект, когда копируется на рабочий стол, строится нормально.
Причина, по-видимому, заключается в том, что один из промежуточных каталогов в пути к папке проекта имел имя в японских символах. Я проверил следующим образом:
- Измените имя папки на английский -> очистить папку сборки -> построить -> ОК
- Измените имя папки обратно на японский -> очистить папку сборки -> построить -> сломанный атлас
- Измените имя папки обратно на английский -> очистить папку сборки -> построить -> ОК
...(вы видите шаблон)...
Интересно, почему и как это влияет только на экспорт текстурных атласов и ничего больше.
Надеюсь, что этот опыт поможет кому-то еще в будущем...
Я также обновлю отчет об ошибках в Apple.
ОБНОВЛЕНИЕ: Согласно Apple, проблема была решена начиная с iOS 8 beta 2 (сборка 12A4297e). У меня не было возможности проверить (проект, над которым я работал, был прототипом, который не взлетел, и я согласился на решение по изменению имени). В любом случае, iOS 8 сейчас финальная.