Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在SceneKit中添加带有类的基元_Ios_Swift_Scenekit_Arkit - Fatal编程技术网

Ios 如何在SceneKit中添加带有类的基元

Ios 如何在SceneKit中添加带有类的基元,ios,swift,scenekit,arkit,Ios,Swift,Scenekit,Arkit,在SceneKit中上课很重要。然而,我无法让它工作 这是我的班级代码 import UIKit import SceneKit class Ship: SCNNode { override init(){ super.init() let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0) let node = SCNNode(geometry: box) }

在SceneKit中上课很重要。然而,我无法让它工作

这是我的班级代码

import UIKit
import SceneKit

class Ship: SCNNode {
    override init(){
        super.init()

    let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)

    let node = SCNNode(geometry: box)

}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")


  }
}
这是我在ViewController中的代码(我正在使用ARKit)


我想我错过了一些基本的东西

SCNView的场景属性是可选属性。将最后一行更改为:

guard let scene = sceneView.scene else { return }
scene.rootNode.addChildNode(tempShip)

您可能尚未创建
SCNScene
并将其添加到视图中。至少在你发布的代码中没有这种迹象。你需要像这样的东西

sceneView.scene = SCNScene()
或者使用
SCNScene
init
方法之一创建它

然后,您将有一个可以挂起节点的场景。别忘了添加照明和照相机


另外:不要子类化
SCNNode
。改用扩展名。如果子类化
SCNNode
SCNScene
,则不能使用Xcode场景编辑器。请参阅。

您应该会看到一条警告,提示您的节点变量未被使用,您需要在节点上设置几何图形。将init方法更改为:

override init(){
    super.init()
    let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
    self.geometry = box
}

我无法让高德-莱特声明生效。是否有其他方法可以做到这一点?如果您使用ARKit的
ARSCNView
,则
场景
属性不是可选的。
override init(){
    super.init()
    let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
    self.geometry = box
}