2015-09-10 10 views
17

Zawsze, gdy ładuję moją aplikację SpriteKit, rejestruje ten błąd: <CAMetalLayer: 0x15f57fa70>: calling -display has no effect. i nie wyświetla poprawnie wielu obiektów. Próbowałem odtworzyć scenę i usunąć mój kod, z których oba nie zrobiły nic. Przez chwilę wydawało mi się, że mógł to być błąd w nowych wersjach beta Xcode 7 i iOS 9, ale teraz, gdy próbowałem go z wersją GM i problem nadal istnieje, prawdopodobnie tak nie jest.Błąd Xcode: wywoływanie -display nie ma żadnego efektu

+0

Zgodnie z pierwszą odpowiedzią na stronie [to] (https://forums.developer.apple.com/thread/21386) błąd związany z metalem jest nieszkodliwy. Jeśli chodzi o niewłaściwe wyświetlanie obiektów, odpowiedź poniżej jest prawdopodobnie poprawna. – mredig

+0

Po Xcode 7.x/iOS 9.x wiadomość najwyraźniej przekształciła się w ': wywołanie -display nie daje żadnego efektu." –

Odpowiedz

11

Sprawdź numer zPosition dla wszystkich swoich SKNodes. Jak się okazało, coś zmieniło się w implementacji SpriteKita, a obiekty SKNode nie są już renderowane w kolejności, w jakiej zostały dodane do węzłów nadrzędnych. Po upewnieniu się, że wszystkie moje SKNodes mają poprawne zPosition, wszystko wróciło do normy.

Jeśli to nie pomoże, sprawdź na forum deweloperów: this post.

+0

Dziękuję bardzo! To doprowadza mnie do szału. Zmiana pozycji Z całkowicie rozwiązała problem. – mhillsman

+0

Co masz na myśli, sprawdzając zPosition? Wszystkie moje mają te same wartości, które im wyznaczyłem. Przez czek rozumiesz ...? Zmienić ich kolejność? Pojawił się ten sam błąd, ale zaczął się dopiero po tym, jak zacząłem używać xCode 7. Moja gra wydaje się działać dobrze, ale nadal dostaję błąd. –

+0

@JozemiteApps No. Problem polega na tym, że wielu programistów (w tym ja) nigdy nie dbało o zmienną 'zPosition' w przeszłości. A teraz, gdy Apple zmienił zachowanie SpriteKita, stało się to oczywiste. To, co mam na myśli przez "sprawdzenie", w rzeczywistości ustawia je na pierwszym miejscu. –

8

Jak ktoś zasugerował w this Apple Developer thread, dodanie następnej pary klucz/wartość do pliku Info.plist aplikacji wydaje się rozwiązać ten problem na razie.

Info.plist containing PrefersOpenGL key/value. Xcode 7.0.1

Należy wybrać edytor> show RAW Keys & wartości przed wejściem powyżej nazwę klucza.

Jak mówi "MacMacMac" w poście, nie jest to idealna poprawka, ponieważ użycie Metalu jest prawdopodobnie lepsze niż użycie OpenGL, ale działa przynajmniej OpenGL.

+1

Co, jeśli w ogóle nie używam metalu i pojawia się błąd? –

+1

@JozemiteApps W iOS 9 automatycznie używasz Metal, jeśli używasz SpriteKit lub SceneKit, ponieważ oba są teraz zaimplementowane w Metal. –

+1

Co, jeśli wolałbym mieć SpriteKit wspierany przez Metal (nie OpenGL) i nadal chcę pozbyć się ostrzeżenia? –

Powiązane problemy