【发布时间】:2019-02-05 22:27:36
【问题描述】:
我正在尝试根据游戏运行的设备调整SKScene 的位置。例如,由于 iPhone XS Max 的“顶级”区域,我需要从 SKScene 高度中减去该高度并相应地定位场景。
这就是我如何计算AppDelegate 中的高度(又名safeAreaHeight)并从场景高度(即sceneHeight)中减去:
safeAreaHeight = UIApplication.shared.statusBarFrame.size.height
sceneHeight -= safeAreaHeight
在GameViewController 中,我尝试重新定位 SKScene,如下所示:
if let view = self.view as! SKView? {
// Load the SKScene from 'MainMenuScene.sks'
if let scene = SKScene(fileNamed: "MainMenuScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFit
scene.size.height = sceneHeight
scene.size.width = sceneWidth
scene.position.y -= safeAreaHeight
// Present the scene
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
}
但是,我收到以下错误:
SKScene:设置 SKScene 的位置无效。
另外,我尝试使用SKAction 来移动SKScene 的位置,然后我收到以下错误:
SKScene:动画 SKScene 的位置没有效果。
感谢您的帮助。
【问题讨论】:
-
我将场景调整为视图控制器的视图和位置节点,以避免必要时出现缺口(或潜在的其他非安全区域)。有没有理由这不适用于您的情况?如果您调整安全区域的场景,您希望在缺口旁边显示什么?我有点喜欢天空或其他背景填充那个空间。
-
@JKaz 我没有尝试调整大小以查看控制器的视图。视图控制器的视图是否等于“安全区域”?我只希望该区域是纯黑色。我不会使用那个区域。
-
vc 的视图是屏幕,而不仅仅是安全区域。安全区域插图是视图的属性。在我见过或使用 skScene 的地方,场景充满了屏幕,各个控件/节点/等都位于安全区域内,避免了看起来与安全区域不同的非安全区域。我认为建议不要单独为非安全区域着色,但快速浏览了一下,我没有找到来源。
标签: swift sprite-kit skscene iphone-xs-max