【发布时间】:2017-08-10 05:55:13
【问题描述】:
我正在制作一个基于 spriteKit 的游戏,想知道是否可以将 SKScene 设置为固定宽度(以便更轻松地布局精灵),并让它在保持纵横比的同时调整到实际屏幕宽度。是否有可能实现这个目标,是否推荐(由于调整大小,精灵会不会被清晰地渲染)?
【问题讨论】:
标签: ios sprite-kit
我正在制作一个基于 spriteKit 的游戏,想知道是否可以将 SKScene 设置为固定宽度(以便更轻松地布局精灵),并让它在保持纵横比的同时调整到实际屏幕宽度。是否有可能实现这个目标,是否推荐(由于调整大小,精灵会不会被清晰地渲染)?
【问题讨论】:
标签: ios sprite-kit
给场景一个固定大小实际上是我们想要在 SpriteKit 游戏中做的事情。 SpriteKit 将使用 scaleMode 设置(默认为 .aspectFill)为每个设备缩放游戏。将场景设置为设备大小或使用 .resizeFill 进行缩放模式并不是一个好主意,因为这会导致不同设备上的大量不一致。我以前参加过一场比赛,那绝对是一场噩梦。
所以我们基本上有两种方法可以正确地做到这一点
1) 将场景大小设置为 iPad(例如 1024x768 - 横向,768x1024 - 纵向。这是 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))
如果您使用视觉场景编辑器,您可以直接在右侧的检查器面板中设置场景大小。
希望对你有帮助
【讨论】:
任何调整大小都会带来性能损失和调整大小的瑕疵,例如边缘模糊或其他。
场景大小由 ViewController 在呈现之前实例化场景时定义。用与实际屏幕大小相同的大小创建场景而不进一步调整大小不是更好吗?
【讨论】: