以下是显示场景的代码:
GameScene *scene = [GameScene unarchiveFromfile:@"GameScene"];scene.scaleMode = SKScenescaleModeFill;// skVIEw is basically self.vIEw casted to SKVIEw[skVIEw presentScene:scene];
SKS文件中场景的大小为2048×1536.
这就是它的样子:
红色部分是场景内容.一个有趣的事情是,背景(蓝色和灰色,确实正确显示).
有任何解决这个问题的方法吗?我只是拉伸场景来填充显示器(没有任何东西被圆角和凹口覆盖)
解决方法 SpriteKit游戏可能有更简洁的方法来支持iPhone X屏幕,但我为SKVIEw推出了以下扩展:public extension SKVIEw { func isIphoneX() -> Bool { let screenHeight = 2436.0 let screenWIDth = 1125.0 let iphoneXAspectRatio = screenHeight / screenWIDth let aspectRatio = Double(self.frame.wIDth/self.frame.height) return (aspectRatio == iphoneXAspectRatio) ? true : false }}
用法:基本上它根据屏幕的宽高比设置缩放模式.如果是iPhone X宽高比,则将缩放模式设置为“resizefill”,否则对于经典矩形iPhone和iPad屏幕使用“aspectFill”模式.
import SpriteKitclass GameVIEwController: UIVIEwController { // MARK: - VIEw lifecycle overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() guard let vIEw = self.vIEw as? SKVIEw else { return } guard let scene = SKScene(filenamed: "scenename") else { return } scene.scaleMode = vIEw.isIphoneX() ? .resizefill : .aspectFill vIEw.presentScene(scene) }}
我发现resizefill模式是使内容填满整个iPhone X屏幕而不会扭曲或剪掉场景内容的唯一方法.如果游戏中有HUD节点(分数,计数器,按钮等……),您还需要对其进行更改!
overrIDe func dIDMove(to vIEw: SKVIEw) { // Any additional setup... ... if vIEw.isIPhoneX { hud = SKReferenceNode(filenamed: "yourIPhoneXHUDScene") } else { hud = SKReferenceNode(filenamed: "yourStandardHUDScene") } cam.addChild(hud)}
在模拟器中测试每个iPhone屏幕尺寸(3.5“,4”,4.7“,5.5”,5.8“).但是我不知道如何处理在Xcode中设置的视网膜iPad尺寸(2048 x 1536)的gamescenes.
总结以上是内存溢出为你收集整理的ios – SpriteKit Scene不适合iPhone X上的整个视图全部内容,希望文章能够帮你解决ios – SpriteKit Scene不适合iPhone X上的整个视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)