SpriteKit, apparemment au hasard, tombe à 40 FPS

J'écris un jeu iOS, en utilisant SpriteKit. À des moments, apparemment randoms, pendant le jeu, la fréquence d'images passera de 60 FPS à 40 FPS (toujours 40). Je cours ceci sur un iPhone 6. Le bogue est présent en construisant pour la libération et le debugging.

J'ai généralement environ 30 nœuds sur l'écran à la fois (parfois less), la plupart de ces nœuds ont des corps physiques, cependant, tous sauf environ 5 ont dynamic set dynamic à NO . Les corps de physique susmentionnés ne se heurtent pas, mais ils entrent en collision avec le noeud du joueur. Le nœud du joueur ne bouge pas rapidement et ne touche généralement que 5 nœuds environ à la fois. Lorsque le nœud du joueur entre en contact avec certains des autres corps de physique, leur propriété dynamic est définie sur YES . Il peut également être utile de mentionner que j'ai deux UIView et UIImageView recouvrent le sumt du SKView , agissant comme le HUD.

Il me semble que ce n'est pas une simulation particulièrement intensive. Je suis passé par ma - update: methods, les actions, les écouteurs de contact, etc. et pas trouvé n'importe quoi qui pourrait causer ceci. J'ai passé ces derniers jours dans Instruments (Time Profiler), espérant que cela pourrait éclairer le sujet, mais encore une fois, je n'ai rien trouvé qui me saute aux yeux. Cependant, je vais admettre être tout nouveau à Instruments.

En ce moment, je n'ai aucun moyen de reproduire le bug. Je dois juste jouer le jeu, et j'espère le rencontrer. Parfois, cela arrive quand la scène se charge (assez rare), juste pendant le gameplay normal, ou pas du tout. Si je mets le jeu en pause (pause de la vue et de la scène) et que je le reprends, la fréquence d'images remonte. Parfois, la fréquence d'images revient à la normale après plusieurs secondes. Je suis complètement à une perte de ce qu'il faut faire ici. Toute aide serait très appréciée.

Merci d'avance.

La seule chose à laquelle je peux penser pour avoir une baisse massive du taux d'images est si toutes les textures de votre HUD ne sont pas déjà pré-rendues. Vous pouvez donc avoir le HUD initial pré-rendu et d'autres images mais certaines images utilisées par le HUD lorsqu'un événement est déclenché dans le jeu.