2015-09-10 12 views
17

Immer wenn ich meine SpriteKit-App lade, protokolliert sie diesen Fehler: <CAMetalLayer: 0x15f57fa70>: calling -display has no effect., und es zeigt viele Objekte nicht richtig an. Ich habe versucht, die Szene neu zu erstellen und meinen Code zu entfernen, die beide nichts getan haben. Eine Weile dachte ich, das wäre vielleicht ein Bug mit der neuen Xcode 7 und iOS 9 Beta, aber jetzt, da ich es mit der GM Version von beiden ausprobiert habe und das Problem weiter besteht, ist das wahrscheinlich nicht der Fall.Xcode-Fehler: Aufruf von -display hat keine Wirkung

+0

Laut der ersten Antwort auf [this] (https://forums.developer.apple.com/thread/21386) Seite ist der Metallfehler harmlos. Was die falsche Anzeige von Objekten betrifft, ist die folgende Antwort wahrscheinlich richtig. – mredig

+0

Ab Xcode 7.x/iOS 9.x scheint sich die Nachricht zu ' entwickelt zu haben: Aufruf -display hat keinen Effekt. ' –

Antwort

11

Überprüfen Sie die zPosition aller Ihrer SKNodes. Wie sich herausstellt, hat sich in der Implementierung von SpriteKit etwas geändert, und SKNode Objekte werden nicht mehr immer in der Reihenfolge gerendert, in der sie ihren übergeordneten Knoten hinzugefügt wurden. Nachdem ich sichergestellt hatte, dass alle meine SKNodes hatten die richtige zPosition, ging alles wieder normal.

Wenn das nicht hilft, überprüfen Sie this post von den Dev-Foren.

+0

Vielen Dank! Das macht mich verrückt. Das Ändern der Z-Position löste das Problem vollständig. – mhillsman

+0

Was meinst du mit der zPosition? Alle von mir haben die gleichen Werte, die ich ihnen zuerst zugewiesen habe. Mit Scheck meinst du ...? Sie neu zuordnen? Ich bekomme den gleichen Fehler, aber es begann erst, nachdem ich xCode 7 benutzt habe. Mein Spiel scheint zwar gut zu laufen, aber ich bekomme immer noch den Fehler. –

+0

@JozemiteApps Nein. Das Problem ist, dass anscheinend viele Programmierer (einschließlich mir selbst) die Variable 'zPosition' in der Vergangenheit nie interessiert haben. Und jetzt, da Apple das SpriteKit-Verhalten geändert hat, wurde es offensichtlich. Was ich mit "Überprüfung" meine, ist, sie tatsächlich an erster Stelle zu setzen. –

8

Wie jemand in this Apple Developer thread vorgeschlagen hat, scheint das Hinzufügen des folgenden Schlüssel/Wert-Paares zur Info.plist Ihrer App dieses Problem vorerst zu lösen.

Info.plist containing PrefersOpenGL key/value. Xcode 7.0.1

Stellen Sie sicher, Editor> Show Raw Keys & Werte auswählen, bevor Sie den Schlüsselnamen oben eingeben.

Wie "MacMacMac" im Forumsbeitrag sagt, ist dies kein idealer Fix, da die Verwendung von Metal vermutlich besser ist als die Verwendung von OpenGL, aber zumindest funktioniert OpenGL.

+1

Was ist, wenn ich überhaupt kein Metall verwende und ich den Fehler bekomme? –

+1

@JozemiteApps In iOS 9 verwenden Sie automatisch Metal, wenn Sie entweder SpriteKit oder SceneKit verwenden, da beide jetzt in Metal implementiert sind. –

+1

Was wäre, wenn ich lieber SpriteKit mit Metal (nicht OpenGL) hätte und trotzdem die Warnung loswerden möchte? –

Verwandte Themen