SceneKit:尽管在 Xcode 场景编辑器中有效,但无法以编程方式添加 SCNReferenceNode
SceneKit: cannot add SCNReferenceNode programmatically though works in Xcode Scene Editor
从 Xcode 场景编辑器中添加 SCNReferenceNode 即可。然而,当使用下面的代码以编程方式完成时,场景中什么也没有出现。
filePath
包含由 print
语句证明的有效路径以及单步执行代码。
帮忙?
if let filePath = NSBundle.mainBundle().pathForResource("RefTest", ofType: "scn", inDirectory: "TestScene.scnassets") {
let referenceURL = NSURL(fileURLWithPath: filePath)
if #available(iOS 9.0, *) {
let referenceNode = SCNReferenceNode(URL: referenceURL)
scene!.rootNode.addChildNode(referenceNode!)
print(referenceNode)
}
}
class 文档声称加载策略指示 SCNReferenceNode
默认情况下立即加载:
When the reference node loads its content (either automatically,
according to the loadingPolicy property, or when you call the load
method), SceneKit loads the referenced scene file. All children of the
scene file’s root node become children of the reference node.
但是,默认情况下似乎不会发生这种情况。您必须像这样调用 load
函数:
let referenceNode = SCNReferenceNode(URL: referenceURL
referenceNode.load()
或者,也许您也可以使用 loadingPolicy
属性,但调用 load
函数绝对有效。
从 Xcode 场景编辑器中添加 SCNReferenceNode 即可。然而,当使用下面的代码以编程方式完成时,场景中什么也没有出现。
filePath
包含由 print
语句证明的有效路径以及单步执行代码。
帮忙?
if let filePath = NSBundle.mainBundle().pathForResource("RefTest", ofType: "scn", inDirectory: "TestScene.scnassets") {
let referenceURL = NSURL(fileURLWithPath: filePath)
if #available(iOS 9.0, *) {
let referenceNode = SCNReferenceNode(URL: referenceURL)
scene!.rootNode.addChildNode(referenceNode!)
print(referenceNode)
}
}
class 文档声称加载策略指示 SCNReferenceNode
默认情况下立即加载:
When the reference node loads its content (either automatically, according to the loadingPolicy property, or when you call the load method), SceneKit loads the referenced scene file. All children of the scene file’s root node become children of the reference node.
但是,默认情况下似乎不会发生这种情况。您必须像这样调用 load
函数:
let referenceNode = SCNReferenceNode(URL: referenceURL
referenceNode.load()
或者,也许您也可以使用 loadingPolicy
属性,但调用 load
函数绝对有效。