2017-08-19 2 views
2
if animal.texture == SKTexture(imageNamed: "cowTexture") { 
    //do stuff 
} 

Apparemment, la deuxième moitié de mon instruction if ci-dessus crée une nouvelle texture qui signifie que la condition n'est jamais vraie. J'ai trouvé une réponse à ce problème en utilisant un enum et un observateur de propriété, mais il y a sûrement un moyen plus efficace?!? Merci!Comparaison de textures SpriteKit

+1

Pourquoi voudriez-vous comparer les textures, ce serait lent. Pensez à votre problème et expliquez ce que vous voulez faire pour le résoudre. – Knight0fDragon

+0

Je compare seulement deux textures donc je doute que la vitesse soit un problème. Mon problème est que la texture finale est choisie au hasard parmi un tableau de textures. Dans l'exemple ci-dessus, je pourrais jouer un son de vache si l'animal a une texture de vache. Je suppose que je pourrais essayer de faire un match sur le tableau, mais parce que c'est un tableau de textures, je pense que je serai de retour là où j'ai commencé. – squarehippo10

+1

pourquoi ne vous donner pas une variable disant qu'il est une vache alors, c'est-ce que 'userData' est pour – Knight0fDragon

Répondre

0

Comme il n'y a aucun autre code à elle hors de la base, je ne peux que penser que vous devez attribuer le SKTexture à une variable de comparaison. Donc, vous pourriez faire quelque chose comme

if animal.texture = cowTexture { 
    //Do stuff 
} 

Où cowTexture a le

SKTexture(imageNamed: "cowTexture") 

qui lui est attribué.

Encore une fois, je ne peux pas vraiment donner une réponse définitive puisque vous utilisez des variables qui ne sont pas dans votre poste.

+0

J'ai essayé ça sans aucune chance. Je serais ravi d'inclure plus de code si cela permettait de répondre à la question, mais je ne suis pas sûr de ce que je pourrais ajouter pour clarifier le problème. Pour le moment je suis en utilisant 'si la chaîne (décrivant: animal.texture) == " 'cowTexture' (480 x 480)"{// faire des choses}' qui fonctionne, mais pas assez. – squarehippo10

+0

Cela ne fonctionne pas, cela créerait deux objets texture différente – Knight0fDragon

+0

Désolé de ne pas être d'une grande utilité. J'ai juste essayé d'y aller avec les connaissances que j'ai actuellement, ce qui est limité. Je recommande que pour l'instant, utilisez votre solution laide. Une solution est meilleure que rien. J'y reviendrai une fois que vous aurez une application qui fonctionne, vous pourrez ainsi vous concentrer sur votre application plutôt que sur une petite optimisation. –