游戏场景 SpriteKit 不适配 iPhone X 屏幕

5
我一直在尝试互联网上找到的所有解决方案,但没有一个符合预期。我的游戏需要一个边框,如附图所示。它在 iPhone 8 和 8 Plus 上运行良好。在 X 上,我似乎找不到填充它而不破坏游戏场景的正确方法。即使我使用 resizeFillaspectFill,它也会切掉游戏区域的重要内容。图中的是 aspectFit,但给了我黑色边框,这看起来并不好,也没有充分利用更大的屏幕。GameScene 文件中的布局与 iPhone X 不符。如何使游戏针对这 3 个设备进行优化?我知道如何在 storyboard 上使用约束和自动布局为应用程序进行调整,但我对 SpriteKit 和 GameScenes 还比较新手。即使 X 上的黑色边框填充了我的边框颜色,我也不介意。但我不知道如何实现它,也不认为这是优化这 3 个设备的最佳实践。预先感谢您的帮助。 iPhone X, 8 and 8 Plus

1
这个问题已经被广泛讨论了,你需要将场景大小设置为iPhone X的尺寸,并允许8进行裁剪。由于不同的宽高比,你永远无法使所有设备上的场景匹配,因此你需要做出一些设计选择。 - Knight0fDragon
有没有办法可以更改SpriteKit的GameScene大小?现在它是8比1的比例。我该怎么改变它? - Nawfaal Mangou
1
你可以在SKS文件中进行更改。 - Knight0fDragon
1
怎么办?在哪里?好像找不到。:( - Nawfaal Mangou
真的吗?你用了苹果提供的模板吗?我不会在这里为琐碎的事情牵着你的手。仔细检查你的项目并理解其中的每一个细节。只需要不断点击即可。 - Knight0fDragon
1个回答

4

在此输入图片描述

我猜你想要这样的效果吧。

1. 可调整大小的场景

首先,您需要使场景可以调整大小(更改大小和纵横比),以便完全匹配显示器。因此,请打开 GameViewController.swift 并设置。

scene.scaleMode = .resizeFill

2. 可调整大小的矩形

现在您想创建一个与场景周长匹配的矩形。 这很容易,只需打开场景并编写以下内容即可:

class GameScene: SKScene {

    override func didMove(to view: SKView) {

        let rectangle = SKShapeNode(rect: self.frame)
        rectangle.strokeColor = .green
        rectangle.lineWidth = 20
        addChild(rectangle)

    }
}

它是如何工作的?

正如你所看到的,我正在使用场景相同的框架来创建一个矩形。因此,您可以确保您的矩形始终与场景周长匹配(这将与显示器匹配)。

就是这样。


非常感谢您的回复,我一回家就会尝试。但是,在iPhone X上,图像会被裁剪还是拉伸? - Nawfaal Mangou
1
矩形既不被裁剪也不被拉伸,只是被重新调整大小。顺便提一下,如果您需要使用位图图像,可以选择裁剪或调整大小。 - Luca Angeletti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接