我正在使用SpriteKit场景构建器来构建我的场景(也称为在Xcode 7 ios9中创建项目时的GameScene.sks文件)。SpriteKit仅在设置屏幕高度和宽度时使用像素值。我的问题是:
如果我将像素值设置为iPhone 6的值,那么游戏是否对iPad和iPhone 6+而言会太小?为什么没有适应设备屏幕的选项?我应该怎么做才能避免这种情况?
我正在使用SpriteKit场景构建器来构建我的场景(也称为在Xcode 7 ios9中创建项目时的GameScene.sks文件)。SpriteKit仅在设置屏幕高度和宽度时使用像素值。我的问题是:
如果我将像素值设置为iPhone 6的值,那么游戏是否对iPad和iPhone 6+而言会太小?为什么没有适应设备屏幕的选项?我应该怎么做才能避免这种情况?
首先,场景的大小是以点
而不是像素
为单位定义的。
让我们看看支持iOS 9的设备如何处理这个问题:
- 1点=1x1像素:iPad 2,iPad mini
- 1点=2x2像素:iPhone 4s,iPhone 5,iPhone 5c,iPhone 5s,iPhone 6,iPhone 6s,iPad mini 2,iPad mini 3,iPad mini 4,iPad 3, iPad 4,iPad Air,iPad Air 2,iPad Pro,iPod touch 5,iPod touch 6
- 1点=3x3像素:iPhone 6 Plus,iPhone 6s Plus
这可以让您指定一个大小,它会自动转换为特定设备的像素密度。
iOS 9支持iPhone/iPad上有几个可用的屏幕尺寸。
使用SpriteKit,您可以通过设置Scene
的scaleMode
属性轻松解决此问题。
您可以从4个选项中选择:
- 填充:缩放SKScene以填充整个SKView。
- 纵横比填充:缩放SKScene以填充SKView,并保留场景的纵横比。如果视图具有不同的纵横比,则可能会出现一些裁剪。
- 纵横比适合:缩放SKScene,以适应SKView并保留场景的纵横比。如果视图具有不同的纵横比,则可能会出现一些"letterboxing"效果。
- 调整大小填充:修改SKScene的实际大小,以完全匹配SKView。
您可能想设置AspectFill
,但这真的取决于您的游戏。
要设置属性,请打开GameViewController.swift
(如果使用Objective-C,则为.m
),在viewDidLoad
中,您将找到此行。只需更改它以符合您的偏好即可。
/* Set the scale mode to scale to fit the window */
gameScene.scaleMode = .AspectFill