web-dev-qa-db-fra.com

Xcode 9 Si vous choisissez une texture dans SKScene dans Spritekit

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
12
BCode

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.

  1. Ajoutez UNIQUEMENT l'image 1x à votre dossier Assets.xcassets.
  2. placez un nœud de couleur sur votre scène SKS.
  3. sélectionner une texture
  4. redimensionner la texture.
  5. ajoutez vos fichiers @ 2x et @ 3x ultérieurement.

Cette solution fonctionne à 100% à chaque fois.

9
Baxter

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!

2
Duc nguyen huu

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!

2
Neal

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é.

1
BCode

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
1
MikeJfromVA

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.

1
Bacchus Plateau

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

1
Reza Shirazian

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.

1
Haiyong Wu

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.

1
Jim