【问题标题】:What size should SKScene be?SKScene 的尺寸应该是多少?
【发布时间】:2021-05-07 21:39:49
【问题描述】:

当我don't specify a size for my SKScene 时,我会出现奇怪的行为,节点要么不出现,要么全屏出现。

一种解决方法是使用 Apple 的启动代码,该代码具有 Scene.sks,基本上将大小硬编码为:

sceneView.presentScene(SKScene(size: CGSize(width: 750, height: 1334)))

在我们拥有自动布局、不同屏幕尺寸、尺寸类别、旋转等的世界中,硬编码场景的宽度和高度似乎并不合适。

指定 SKScene 大小以使其尊重并适应我设备的尺寸、旋转等的正确方法是什么?

例如,理想情况下我可以省略尺寸:

sceneView.presentScene(SKScene()))

... 而是让自动布局为我调整场景大小。但是,正如链接的问题所示,这会导致场景无法正确显示。或者,如果自动布局不是一个选项,我应该重写哪些方法以确保我的场景始终正确实例化/更新?

我注意到,当我选择了不正确的尺寸(例如 200x200)时,它仍然会显示节点,但会将它们放大到更大。这让我相信,无论我选择什么尺寸,它总是会正确填充相机输出输出(即不会裁剪任何内容)。但是,如果我选择了错误的尺寸,艺术品将被不正确地放大/缩小。因此,我现在想知道我是否真的应该根据设备的尺寸来确定尺寸,还是根据相机给我的东西(例如像素分辨率)来确定尺寸。

【问题讨论】:

    标签: ios swift sprite-kit autolayout arkit


    【解决方案1】:

    SpriteKit 场景大小可以这样设置:

    let videoNode = SKVideoNode(fileNamed: "video.mov")
        
    let skScene = SKScene(size: CGSize(width: planeGeo.width * 1280,
                                      height: planeGeo.height * 720))
        
    videoNode.position = CGPoint(x: skScene.size.width / 2,
                                 y: skScene.size.height / 2)
        
    videoNode.size = skScene.size
    
    skScene.addChild(videoNode)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-26
      • 2015-07-14
      • 2013-09-11
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      相关资源
      最近更新 更多