ios – SpriteKit Scene不适合iPhone X上的整个视图

ios – SpriteKit Scene不适合iPhone X上的整个视图,第1张

概述iPhone X几天前发布.我正在尝试将我的一个游戏更新到新手机.但是,在具有SpriteKit场景的一个场景中,场景不会缩放以填充整个屏幕. 以下是显示场景的代码: GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"];scene.scaleMode = SKSceneScaleModeFill;// skView is iPhone X几天前发布.我正在尝试将我的一个游戏更新到新手机.但是,在具有SpriteKit场景的一个场景中,场景不会缩放以填充整个屏幕.

以下是显示场景的代码:

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上的整个视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1103773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存