2017-09-15 34 views
8

iPhone Xは数日前にリリースされます。私は自分のゲームを新しい携帯電話にアップデートしようとしています。ただし、SpriteKitシーンのあるシーンでは、シーン全体が画面いっぱいに縮尺されません。ここでSpriteKitのシーンがiPhoneの全画面に表示されない

は、シーンを表示するためのコードです:SKSファイル内

GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"]; 
scene.scaleMode = SKSceneScaleModeFill; 
// skView is basically self.view casted to SKView 
[skView presentScene:scene]; 

シーンのサイズは2048×1536です。赤い部分は、シーンの内容である

Picture

これは次のようにそれが見えるものです。興味深いのは、背景(青と灰色)が適切に表示されることです。

とにかくこれを修正するにはどうすればいいですか?表示を満たすためにシーンを伸ばしても問題ありません。丸みを帯びたコーナーやノッチ)に巻き

答えて

0

はiPhone Xの画面をサポートするためのSpriteKitベースのゲームのためのクリーンなアプローチがあるかもしれませんが、私はGameViewControllerのための次の拡張で出てきた:

import SpriteKit 

class GameViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if let view = self.view as? SKView { 
      if let scene = SKScene(fileNamed: "yourscenefilename") { 
       // Set the scale mode according to the device 
       if isIphoneX { 
        scene.scaleMode = .resizeFill 
       } else { 
        scene.scaleMode = .aspectFill 
       } 

       // Any additional setup... 
       ... 

       // Present the scene 
       view.presentScene(scene) 
      } 
     } 
    } 
} 

extension GameViewController { 
    var isIphoneX: Bool { 
     let aspectRatio = Double(view.frame.width/view.frame.height) 
     let iphoneXAspectRatio = 2436.0/1125.0 
     return (aspectRatio == iphoneXAspectRatio) ? true : false 
    } 
} 

は基本的にそれが設定されますスクリーンのアスペクト比に応じてスケールモードに設定します。iPhone Xのアスペクト比の場合、スケールモードを「resizeFill」に設定します。それ以外の場合は、古典的な長方形iPhoneとiPadの画面では、 "aspectFill"モードを使用します。

シーンのコンテンツを歪ませたり、切り取ったりすることなく、コンテンツをiPhone Xの画面全体に埋め込む唯一の方法は、resizeFillモードです。ゲーム内にHUDノードがある場合(スコア、カウンター、ボタンなど)、変更を加える必要があります!シミュレータ内のすべてのiPhoneの画面サイズ(3.5" 、4" 、4.7" 、5.5" 、5.8" )でテストされて

override func didMove(to view: SKView) { 
    // Any additional setup... 
    ... 

    if isIPhoneX { 
     hud = SKReferenceNode(fileNamed: "yourIPhoneXHUDScene") 
    } else { 
     hud = SKReferenceNode(fileNamed: "yourStandardHUDScene") 
    } 

    cam.addChild(hud) 
} 

。 しかし、私は(網膜のiPadのサイズとgamescenesに対処するかどうかはわかりませんX 1536 2048)Xcodeで設定します。

0

aspectFillが私のために正常に動作します。シーンを左に、右にクリップされますが、それが歪んでいない。

私はSKViewは、自動レイアウトを自動的にリサイズしているし、私は私を提示アスペクトフィールのシーン

関連する問題