Сбой Xcode 9 при установке текстуры в SKScene в Spritekit

В настоящее время я создаю игру в Spritekit с Xcode. После обновления до Xcode 9 я обнаружил, что каждый раз, когда я устанавливаю текстуру через файл .sks, Xcode мгновенно падает. Я перезагрузил свой компьютер, обновил приложение, перезагрузил текстуры и ничего не изменилось. У меня Macbook Prof 13 дюймов 2017 года с сенсорной панелью. Вот диагностика:

Process:               Xcode [577]
Path:                  /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier:            com.apple.dt.Xcode
Version:               9.0.1 (13249)
Build Info:            IDEFrameworks-13249000000000000~2
App Item ID:           497799835
App External ID:       823984564
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Xcode [577]
User ID:               501

Date/Time:             2017-10-22 17:30:06.029 -0400
OS Version:            Mac OS X 10.12.6 (16G29)
Report Version:        12
Anonymous UUID:        0537A8C3-9FB2-836A-088B-E5D2B7FEB3EB


Time Awake Since Boot: 100 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: SKCRenderer_resource_queue

Exception Type:        EXC_BAD_ACCESS (SIGBUS)
Exception Codes:       KERN_PROTECTION_FAILURE at 0x000000012ceef7b8
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Bus error: 10
Termination Reason:    Namespace SIGNAL, Code 0xa
Terminating Process:   exc handler [0]

VM Regions Near 0x12ceef7b8:
    MALLOC_LARGE           000000012ceaf000-000000012ceef000 [  256K] rw-/rwx SM=PRV  
--> mapped file            000000012ceef000-000000012cf22000 [  204K] r--/rw- SM=COW  
    MALLOC_LARGE           000000012cf31000-000000012cf71000 [  256K] rw-/rwx SM=PRV  

Application Specific Information:
Sending userDidChangeValue: to <SKInspectorTextureProperty: 0x7fadb2219440> from <NSComboBox: 0x7fadb221ad80>
ProductBuildVersion: 9A1004
Performing @selector(userDidChangeValue:) from sender NSComboBox 0x7fadb221ad80

person bwiz    schedule 22.10.2017    source источник
comment
Вам нужно удалить и восстановить файл SKS   -  person Knight0fDragon    schedule 23.10.2017


Ответы (9)


Я решил проблему с вылетом.

Проблема с вашими изображениями @2x и @3x. С присутствующими в вашей папке Assets.xcassets - нода SKS вылетит из XCODE.

  1. Добавьте ТОЛЬКО изображение 1x в папку Assets.xcassets.
  2. поместите Color Node на сцену SKS.
  3. выберите текстуру
  4. изменить размер текстуры.
  5. добавьте свои файлы @2x и @3x позже.

Это решение работает на 100% каждый раз.

person Baxter    schedule 25.02.2018
comment
100 раз спасибо за это! Из-за этого я несколько месяцев застрял с редактированием обходных путей в нескольких проектах ... Переместил ресурсы в @1x и могу снова редактировать без сбоев. - person michael-martinez; 16.03.2018
comment
Через несколько месяцев я воссоздал новый файл .sks с нуля для другого скина/их, это отняло у меня слишком много часов для каждого скина. Теперь ты меня спасаешь!!! - person huyleit; 22.04.2018

ОМ, я нашел причину. Это произойдет, если ваше изображение не равно соотношению с текущим размером skspritenode на раскадровке. Удачи!

person Duc nguyen huu    schedule 17.11.2017
comment
Хм... И мое изображение, и размер SpriteNode 110x110, то есть соотношение 1:1, и он все еще падает. - person bwiz; 18.11.2017
comment
Пробовали сохранить без изменения размера? Простое помещение изображения в редактор приводит к изменению метаданных изображения, а Xcode кажется чувствительным к метаданным изображения. - person MikeJfromVA; 12.06.2018

Удалите метаданные из изображения, прежде чем установить его в качестве текстуры.

Например, используя ImageMagick:

convert oldImage.png -strip newImage.png
person MikeJfromVA    schedule 10.06.2018

Я обнаружил, что очистка сборки сработала один раз, а до этого я поместил изображения в фотошоп и экспортировал их в формате PNG, а затем поместил их в папку с ресурсами, и это, похоже, какое-то время работало. Но после Mojave и последнего обновления Xcode это больше не работает. Я уже отправил в Apple 3 отчета о сбоях, и мне потребовался почти час, чтобы получить 2 спрайта с правильными текстурами на экране. Не хочу показаться грубым, но Apple нужно перестать быть кучей апельсинов в этом вопросе и исправить это как можно скорее!!

person Neal    schedule 04.11.2018

Я нашел обходной путь, который может работать или не работать, он ненадежен, но все же лучше, чем не работать вообще. Я создал пустой файл SKS и установил все свои текстуры в этот файл. Затем я скопировал и вставил узел в предпочитаемый файл SKS.

person bwiz    schedule 24.10.2017
comment
.... Это именно то, что я прокомментировал, это не обходной путь. Ваш файл SKS был поврежден - person Knight0fDragon; 24.10.2017
comment
У меня не работает, если я создаю пустой SKS, перетаскиваю новый Sprite и устанавливаю ему текстуру, все равно вылетает. Что именно вы сделали, чтобы заставить его работать? @BCode - person Juan Curti; 21.11.2017
comment
Когда я опубликовал это, я смог создать новый файл .sks, добавить свои спрайты в эту сцену, а затем скопировать их в сцену, в которую я хочу, но теперь это не работает. Моя текущая стратегия заключается в очистке сборки (Shift + Cmd + K) перед добавлением текстуры и последующем ее сохранении. Это работает примерно в 25% случаев, и я, к сожалению, не смог найти реального исправления. - person bwiz; 21.11.2017
comment
Я сделал именно то, что вы сделали, и это сработало нормально. Пока все хорошо, но когда я выхожу из Xcode и хочу снова поработать над сценой на следующий день или около того, я совершенно не могу открыть файл. Это так глючит! Вы тоже нашли обходной путь? - person Lenny1357; 23.11.2017
comment
Нет - у меня не было такой проблемы. Попробуйте продублировать файл. Xcode действительно убивает меня этими ошибками. - person bwiz; 25.11.2017

На форумах Apple есть отличный обходной путь.

Как исправить файл .sks:

  • Откройте файл .sks вне проекта (закройте проект и откройте файл непосредственно из Finder)

  • Вы должны увидеть красные кресты вместо спрайтов, удалите информацию о названии текстур для всех из них.

  • Теперь вы сможете повторно открыть файл из проекта.

  • Наконец, повторно введите имя текстуры для всех ваших спрайтов.

person Bret W    schedule 15.01.2018

У меня была эта проблема только с одной из моих текстур спрайтов, вызывающей сбой редактора спрайтов Xcode (даже после удаления изображений @2x и @3x). Он имел разрешение изображения 300 пикселей на дюйм. Я изменил его на 72 пикселя/дюйм, что соответствует другим текстурам спрайтов. Нет больше аварии.

Я надеюсь, что это поможет кому-то. Эта ошибка в редакторе спрайтов Xcode присутствует в нескольких версиях Xcode и является настоящим убийцей производительности. Продолжайте отправлять эти отчеты об ошибках в Apple.

person Jim    schedule 05.05.2018

Я думаю, это связано с вашим компьютером: MacBook Pro (13 дюймов, 2017 г.), который теперь также является моей рабочей станцией.

Я протестировал тот же проект (просто созданный по шаблону игры с идентичным изображением текстуры) на следующих компьютерах с установленными Mojave 10.14 и Xcode 10.1:

Mac mini server (конец 2012 г.) iMac, 27 (середина 2011 г.) MacBook Pro, 13 (середина 2014 г.) MacBook Air, 13 (середина 2014 г.) MacBook Pro, 15 (середина 2014 г.) Все вышеперечисленные компьютеры работают хорошо.

Еще одна странная вещь происходит, когда я проецирую свой MacBook Pro (13 дюймов, 2017 г.) через AirPlay, он больше не падает.

person Haiyong Wu    schedule 04.12.2018

У меня была та же проблема, и мне помогло обойти использование .xcassets вместе. Я просто добавил папку в свой проект и импортировал изображения в папку. После этого назначение текстуры в редакторе сцен больше не приводило к падению Xcode.

person Reza Shirazian    schedule 02.12.2018