Je construis actuellement un jeu dans Spritekit avec Xcode. Après la mise à jour vers Xcode 9, j'ai constaté que chaque fois que je définissais une texture dans le fichier .sks, Xcode se bloquait instantanément. J'ai redémarré mon ordinateur, mis à jour l'application, rechargé les textures et rien n'a changé. J'ai le Macbook Prof 13 "w/touch 2017. Voici les diagnostics:
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
J'ai résolu le problème de crash.
Le problème vient de vos images @ 2x et @ 3x. Avec ceux présents dans votre dossier Assets.xcassets, le nœud SKS plantera XCODE.
Cette solution fonctionne à 100% à chaque fois.
OHM, j’ai trouvé la raison Cela se produira si votre image n’est pas à égalité avec la taille actuelle de skspritenode sur le scénarimage Bonne chance!
J'ai constaté que le nettoyage de la construction fonctionnait une fois et auparavant, je mettais les images dans Photoshop et les exportais au format PNG, puis dans le dossier des ressources, ce qui semblait fonctionner pendant un certain temps. Mais depuis Mojave et la dernière mise à jour de Xcode, cela ne semble plus fonctionner. J'ai déjà soumis 3 rapports d'accident à Apple et il me faut presque une heure pour obtenir 2 sprites avec les bonnes textures à l'écran. Ne voulez pas paraître grossier, mais Apple doit cesser d’être un groupe d’oranges et obtenir est réglé dès que possible!
J'ai trouvé une solution de contournement qui peut ou peut ne pas fonctionner, ce n'est pas fiable mais reste mieux que ne pas travailler du tout. J'ai créé un fichier SKS vide et défini toutes mes textures dans ce fichier. J'ai ensuite copié et collé le nœud dans le fichier SKS préféré.
Supprimez les métadonnées de l'image avant de la définir comme texture.
Par exemple, en utilisant ImageMagick :
convert oldImage.png -strip newImage.png
Il existe une excellente solution de contournement sur les forums Apple.
Comment réparer votre fichier .sks:
Ouvrez votre fichier .sks en dehors du projet (fermez votre projet et ouvrez le fichier directement à partir du Finder)
Vous devriez voir des croix rouges au lieu des Sprites, supprimez les informations de nom de texture pour toutes.
Vous devriez maintenant pouvoir rouvrir le fichier du projet.
Enfin, entrez à nouveau le nom de la texture pour tous vos sprites.
J'ai eu le même problème et ce qui a fonctionné pour moi a été de contourner en utilisant .xcassets
tous ensemble. J'ai simplement ajouté un dossier à mon projet et importé les images dans le dossier. Après cela, l’affectation de texture dans l’éditeur de scène n’est plus écrasée Xcode
Je pense que cela est dû à votre ordinateur: MacBook Pro (13 pouces, 2017), qui est également mon poste de travail maintenant.
J'ai testé le même projet (créé simplement par le modèle de jeu avec une image de texture identique) sur les ordinateurs suivants sur lesquels Mojave 10.14 et Xcode 10.1 sont installés:
Mac mini server (plus tard en 2012) IMac, 27 (milieu de 2011) MacBook Pro, 13 (milieu de 2014) MacBook Air, 13 (milieu de 2014) MacBook Pro, 15 (mi-2014) Tous les ordinateurs ci-dessus fonctionnent bien.
Une autre chose étrange se produit lorsque je projette mon MacBook Pro (13 pouces, 2017) sur AirPlay, il ne plante plus.
J'avais ce problème avec seulement une de mes textures Sprite, ce qui entraînait le blocage de l'éditeur Xcode Sprite (même après la suppression des images @ 2x et @ 3x). Il avait une image PPP de 300 pixels/pouce. Je l'ai changé à 72 pixels/pouce qui correspond aux autres textures Sprite. Plus de crash.
J'espère que ça aidera quelqu'un. Ce bogue dans l'éditeur de sprite de Xcode existe depuis un certain nombre de versions de Xcode et est un véritable tueur de productivité. Continuez à soumettre ces rapports de bogues à Apple.