如何使SKScene有固定的宽度?

我正在制作一个基于spriteKit的游戏,并想知道我是否可以使SKScene的固定宽度(以便更容易地布局精灵),并让它在保持纵横比的同时调整到实际的屏幕宽度。 是否有可能实现这个目标,并build议(精灵不会清晰地显示精灵)?

实际上让场景变成固定大小实际上是我们想要在SpriteKit游戏中做的事情。 SpriteKit将比使用scaleMode设置的每个设备缩放游戏(默认为.aspectFill)。 将场景设置为设备尺寸或使用.resizeFill进行缩放模式不是一个好主意,因为这会导致不同设备上的大量不一致。 我以前曾经在那里打过一场比赛,这绝对是一场噩梦。

所以我们基本上有两种方法可以正确做到这一点

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

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

在iPad上显示更多的游戏示例:

阿尔托斯冒险,青奥运财富,林波,线禅,现代战争5。

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

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

卢米诺城,机器人独angular兽攻击

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

无论场景大小,缩放模式通常最好保留在.aspectFill的默认设置下。 这样您将在所有设备上获得一致的体验。

我不会尝试做一些随机黑客手动更改不同设备上的场景或节点大小/尺度,你应该让xCode / SpriteKit为你做。

在代码中,你可以用你喜欢的尺寸初始化一个SKScene

let gameScene = GameScene(size: CGSize(width: 1024, height: 768)) 

如果使用视觉场景编辑器,则直接在右侧的检查器面板中设置场景大小。

希望这可以帮助

任何resize都会带来性能上的损失,并会resize,如边缘模糊等。

场景大小由ViewController在呈现场景之前实例化场景来定义。 创build与实际屏幕大小相同大小的场景不是更好吗?不要再resize了吗?