HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – SpriteKit Scene不适合iPhone X上的整个视图大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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 SpriteKit

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。