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

Posted

技术标签:

【中文标题】SpriteKit 如何支持多种屏幕尺寸?【英文标题】:How to support multiple screen sizes in SpriteKit? 【发布时间】:2015-08-20 17:16:41 【问题描述】:

我想制作支持所有ios设备的通用游戏,除了制作项目如何使我的游戏支持所有屏幕尺寸之外,还有一种方法可以通过代码检测屏幕尺寸并根据尺寸,每个设备的图形分辨率应该是多少?

【问题讨论】:

这个问题已经被问过很多次了。 我没有找到我想要的 那么为了清楚起见,您应该在问题中添加更多详细信息,说明您到底在寻找什么。 【参考方案1】:

使用此代码确定屏幕的宽度和高度。您还可以找出正在使用的设备。

    struct ScreenSize

    static let SCREEN_WIDTH         = UIScreen.mainScreen().bounds.size.width
    static let SCREEN_HEIGHT        = UIScreen.mainScreen().bounds.size.height
    static let SCREEN_MAX_LENGTH    = max(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)
    static let SCREEN_MIN_LENGTH    = min(ScreenSize.SCREEN_WIDTH, ScreenSize.SCREEN_HEIGHT)


struct DeviceType

    static let IS_IPHONE_4_OR_LESS  = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0
    static let IS_IPHONE_5          = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0
    static let IS_IPHONE_6          = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0
    static let IS_IPHONE_6P         = UIDevice.currentDevice().userInterfaceIdiom == .Phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0
    static let IS_IPAD              = UIDevice.currentDevice().userInterfaceIdiom == .Pad && ScreenSize.SCREEN_MAX_LENGTH == 1024.0

您可以println() 调试器中的值。

【讨论】:

【参考方案2】:

嗯,GameScene 应该从SKScene 继承,你可以分别通过self.frame.sizeself.frame.widthself.frame.height 来获取它的大小、宽度和高度。

This 链接也可能对您有所帮助。

【讨论】:

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

支持各种屏幕尺寸

如何在多种屏幕尺寸上查看我的网站?

屏幕的实际尺寸比我看到的要大

如何在 iOS 的 UILabel/UITextView 中处理多种屏幕尺寸的中文自动换行?

SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域

再次了解android中屏幕尺寸,单位等