2017-09-15 14 views
8

पर पूरे दृश्य में फिट नहीं है आईफोन एक्स कुछ दिन पहले जारी किया गया है। मैं अपने गेम में से एक को नए फोन में अपडेट करने की कोशिश कर रहा हूं। हालांकि, स्प्राइटकिट दृश्य के साथ एक दृश्य पर, दृश्य पूरी स्क्रीन को भरने के लिए स्केल नहीं करता है।स्प्राइटकिट दृश्य आईफोन एक्स

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

एसकेएस फ़ाइल में दृश्य का आकार 2048x1536 है:

यहाँ दृश्य प्रदर्शित करने के लिए कोड है।

यह यह क्या लग रहा है की तरह है:

Picture

लाल हिस्सा दृश्य सामग्री है। एक दिलचस्प बात यह है कि पृष्ठभूमि (जो नीला और भूरा है, ठीक से प्रदर्शित होता है।

वैसे भी इसे ठीक करने के लिए? मैं दृश्य को भरने के लिए दृश्य को खींचने के साथ ठीक हूं (कुछ भी शामिल नहीं होगा गोल कोने और निशान) द्वारा

उत्तर

0

वहाँ SpriteKit खेल के लिए एक क्लीनर दृष्टिकोण iPhone एक्स स्क्रीन का समर्थन करने के हो सकता है, लेकिन मैं 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 
    } 
} 

मूल रूप से यह सेट स्केल मोड स्क्रीन के पहलू अनुपात के अनुसार। यदि यह एक आईफोन एक्स पहलू अनुपात है तो स्केल मोड को "आकार बदलें" पर सेट करें, अन्यथा क्लासिक आयताकार आईफोन और आईपैड स्क्रीन के लिए "पहलूफिल" मोड का उपयोग करें।

मुझे पता चला कि आकार बदलना एकमात्र तरीका है जो सामग्री को पूरी आईफोन एक्स स्क्रीन को विकृत या दृश्य की सामग्री को बंद करने के बिना भरने का एकमात्र तरीका है। यदि आपके पास गेम में एक एचयूडी नोड है (स्कोर, काउंटर, बटन, आदि ...) तो आपको उसमें बदलाव करने की ज़रूरत है!

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

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

    cam.addChild(hud) 
} 

सिम्युलेटर में हर iPhone स्क्रीन आकार (3.5 ", 4", 4.7 ", 5.5", 5.8 ") के साथ परीक्षण किया गया। हालांकि मैं रेटिना आईपैड आकार के साथ gamescenes (से निपटने के लिए कैसे यकीन नहीं है 2048 x 1536) Xcode में निर्धारित किया है।

0

aspectFill मेरे लिए ठीक काम करता है। दृश्य बाईं तरफ और दाईं तरफ काटा गया है, लेकिन यह विकृत नहीं है।

मैं SKView autolayout साथ आकार अपने आप बदल गए हैं और फिर मैं उपस्थित मेरी पहलू के साथ दृश्य।

संबंधित मुद्दे