如何让SKScene有固定的宽度?

use*_*898 5 ios sprite-kit

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

cra*_*777 5

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

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

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 上显示较少的游戏示例:

鲁米诺城,机器人独角兽来袭

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

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

我不会尝试在不同设备上手动更改场景或节点大小/比例的一些随机技巧,您应该让 xCode/SpriteKit 为您完成。

在代码中,您将使用您喜欢的大小初始化 SKScene,如下所示

let gameScene = GameScene(size: CGSize(width: 1024, height: 768))
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助