Das iPhone X ist vor ein paar Tagen erschienen. Ich versuche, eines meiner Spiele auf das neue Telefon zu aktualisieren. In einer Szene mit SpriteKit-Szene wird die Szene jedoch nicht so skaliert, dass sie den gesamten Bildschirm ausfüllt.
Hier ist der Code zum Anzeigen der Szene:
%Vor%Die Größe der Szene in der SKS-Datei ist 2048x1536.
So sieht es aus:
Der rote Teil ist der Szeneninhalt. Eine interessante Sache ist, dass der Hintergrund (der blau und grau ist, wird richtig angezeigt.
Wie auch immer, um das zu beheben? Mir geht es gut, nur die Szene zu strecken, um die Anzeige zu füllen (es wird nichts von der abgerundeten Ecke und der Kerbe verdeckt sein)
aspectFill funktioniert gut für mich. Die Szene ist links und rechts beschnitten, aber nicht verzerrt.
Ich habe SKView automatisch mit AutoLayout skaliert und dann präsentiere ich meine Szene mit aspectFill.
Es könnte einen saubereren Ansatz für SpriteKit-Spiele geben, um den iPhone X-Bildschirm zu unterstützen, aber ich habe die folgende Erweiterung für GameViewController herausgebracht:
%Vor%Grundsätzlich wird der Skalierungsmodus entsprechend dem Seitenverhältnis des Bildschirms eingestellt. Wenn es sich um ein iPhone X-Seitenverhältnis handelt, stellen Sie den Skalierungsmodus auf "resizeFill" ein, ansonsten verwenden Sie für die klassischen rechteckigen iPhone- und iPad-Bildschirme den "aspectFill" -Modus.
Ich habe festgestellt, dass der resizeFill-Modus die einzige Möglichkeit ist, den Inhalt des gesamten iPhone X-Bildschirms zu füllen, ohne den Inhalt der Szene zu verzerren oder zu beschneiden. Wenn Sie einen HUD-Knoten im Spiel haben (Punkte, Zähler, Knöpfe usw.), müssen Sie auch Änderungen daran vornehmen!
%Vor%Getestet mit jeder iPhone-Bildschirmgröße (3,5 ", 4", 4,7 ", 5,5", 5,8 ") im Simulator. Allerdings bin ich mir nicht sicher, wie ich mit Gamescenes mit Retina iPad Größe (2048 x 1536) in Xcode umgehen soll.
Tags und Links iphone ios sprite-kit