SpriteKit - 如何处理多种屏幕尺寸?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpriteKit - 如何处理多种屏幕尺寸?相关的知识,希望对你有一定的参考价值。

我的新游戏已经完成,现在我只是在多个真实设备上进行测试。测试后我遇到了多个问题。最大的问题是如何处理屏幕尺寸。游戏是我想要它在6 Plus / 6s Plus上看的方式,而不是在6s,6,5s,5,4s,4或iPad上。

我找到了这两个答案,但我不知道如何实现它们:How to support multiple screen sizes in SpriteKit?SpriteKit how to get correct screen size

我真的很想得到任何帮助,因为这让我感到恼火。

答案

我被提醒检查屏幕大小和更改节点大小,我发现这是一个答案:how to check screen size of iphone 4 and iphone 5 programmatically in swift

所有我必须添加的是在我的GameScene中,它在每个.swift中被调用:

extension UIScreen {

enum SizeType: CGFloat {
    case Unknown = 0.0
    case iPhone4 = 960.0
    case iPhone5 = 1136.0
    case iPhone6 = 1334.0
    case iPhone6Plus = 1920.0
}

var sizeType: SizeType {
    let height = nativeBounds.height
    guard let sizeType = SizeType(rawValue: height) else { return .Unknown }
    return sizeType
}
}

还有这个

if UIScreen.mainScreen().sizeType == .iPhone4 {
// Make specific layout for small devices.
}
另一答案

这是一个非常常见的问题。

我们在SpriteKt中通常做的是给SKScene一个固定的大小,让SpriteKit在不同的设备上为你做扩展。

所以基本上我们有2种方法可以正确地完成它

1)将场景大小设置为iPad(例如1024x768 -landscape,768x1024 - portrait)。这是Xcode 7中的默认设置。

你通常只是在iPad上的顶部/底部(横向)或左/右(纵向)显示/显示一些额外的背景,这些背景会在iPhone上被裁剪。

iPhone上的iPad /裁剪上显示更多内容的游戏示例:

Altos Adventure,Leos Fortune,Limbo,The Line Zen,Modern Combat 5。

2)Apple将xCode 8中的默认场景大小更改为iPhone 6/7(750 * 1334-Portait,1337 * 750-Landscape)。此设置将在iPad上裁剪您的游戏。

在iPad上显示较少的游戏示例:

Lumino City,机器人独角兽攻击

在这两个选项之间进行选择取决于您,并取决于您正在制作的游戏。我通常更喜欢使用选项1并在iPad上显示更多背景。

无论场景大小,缩放模式通常最好保留在.aspectFill的默认设置下。

您可以使用通用资产插槽和/或设备特定图像。这样,您将在所有设备上获得一致的体验

Spritekit scale full game to iPad

How to make SKScene have fixed width?

希望这可以帮助

另一答案

在我的情况下,我有一个肖像游戏,我想保持height固定,同时显示或多或少的内容左/右取决于设备的屏幕。

为此在Xcode的场景编辑器中,我为场景添加并设置了SKCameraNode,并将场景大小设置为“最宽”的宽高比设备(iPhone X),即2436x1125像素。

enter image description here

然后为场景设置自定义类并覆盖sceneDidLoad

override func sceneDidLoad()
{
    super.sceneDidLoad()

    self.size.width = self.size.height * (UIScreen.main.bounds.size.width / UIScreen.main.bounds.size.height)
    self.scaleMode = .aspectFit
}

如果我想预览我的游戏在“最窄”设备中的外观(任何iPad的比例为1.5:1),我只是暂时将我的场景的width更改为1500像素周围。

enter image description here

注意:SKViewcontentMode没有任何改变。

以上是关于SpriteKit - 如何处理多种屏幕尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit 如何支持多种屏幕尺寸?

如何处理 libGDX 中的不同纵横比?

如何处理大维度表

如何处理 iPhone 4s、5 和 6 的屏幕尺寸,并使所有内容在所有设备上看起来都一样

如何处理重叠 Mousareas 中的按下和释放信号?

如何处理不同的图像尺寸