如何让SKScene有固定的宽度?

时间:2017-03-18 18:46:32

标签: ios sprite-kit

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

在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。这样您就可以在所有设备上获得一致的体验。

我不会尝试在差异设备上手动更改场景或节点大小/比例的随机黑客,你应该让xCode / SpriteKit为你做。

在代码中,您可以使用您喜欢的大小初始化SKScene

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

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

希望这有帮助

答案 1 :(得分:0)

任何调整大小都会带来性能损失并调整边缘模糊或其他等工件。

场景大小由ViewController在呈现场景之前实例化时定义。创建与实际屏幕尺寸相同的场景并不进一步调整大小是不是更好?