SK3DNode 占据整个屏幕,尽管有框架

问题描述 投票:0回答:1

我有以下最小可重现代码:

class GameViewController: UIViewController {
  
  override func viewDidLoad() {
    super.viewDidLoad()
    
    if let view = self.view as! SKView? {
      
      let scene = SKScene()
      let node3D = SK3DNode(viewportSize: CGSize(width: 200, height: 200))
      node3D.position = CGPoint(x: 100, y: 100)
      
      let scene3D = SCNScene()
      node3D.scnScene = scene3D
      scene.addChild(node3D)
      
      let camera = SCNCamera()
      let cameraNode = SCNNode()
      cameraNode.camera = camera
      cameraNode.position = SCNVector3(x: 0, y: 0, z: 10)
      scene3D.rootNode.addChildNode(cameraNode)
      
      
      let box = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.1)
      box.firstMaterial?.diffuse.contents = UIColor.green
      scene3D.rootNode.addChildNode(SCNNode(geometry: box))
      scene3D.background.contents = UIColor.red
      
      
      
      
        
      view.presentScene(scene)
      
      view.ignoresSiblingOrder = true
      
      view.showsFPS = true
      view.showsNodeCount = true
    }
  }
}

这里我简单的在左下角放了一个SK3DNode。当我设置断点时,我还看到 SK3DNode 的框架为 (0, 0, 200, 200),这是正确的。

但是,当我看到视图层次结构下的节点时,我发现它占据了整个屏幕,这很奇怪。见下图:

enter image description here

ios swift sprite-kit scenekit
1个回答
0
投票

事实证明,这种行为仅在 SKScene 没有大小时发生。在我指定场景的大小后,它再次起作用:


      let scene = SKScene(size: view.frame.size)

我不知道这有什么关系。可能是一个错误或一些未记录的行为。

© www.soinside.com 2019 - 2024. All rights reserved.