尝试用不同 .scn 文件中的节点替换 ChildNode,为什么它不起作用?
Trying to replaceChildNode with node in different .scn file, why isn't it working?
我正在尝试用另一个 .scn 文件中的另一个节点替换主 .scn 中的一个节点。
我找到了
的方法
func replaceChildNode(_ oldChild: SCNNode,
with newChild: SCNNode)
但是当我实现它的时候。在我的代码中,我收到 1 个警告和 2 个错误:
warning= Expression implicitly coerced from 'SCNNode?' to 'Any'
error= 1.expected seperator (after with), 2.use of unresolved identifier 'with'.
即使在错误一修复 1 之后仍然出现错误 2 和警告
我按以下方式定义了我的节点:
var scene:SCNScene!
var test3Scene:SCNScene!
在加载程序中变为:
scene = SCNScene(named: "art.scnassets/x1.scn")
test3Scene=SCNScene(named: "art.scnassets/test3.scn")
相关函数如下所示:
@objc func buttonClicked(){
print("clicked")
sceneView.allowsCameraControl = false
if(selection=="avatar"){
scene.rootNode.replaceChildNode(_, oldChild: scene.rootNode.childNode(withName: "test1 reference", recursively: true),
with newChild: test3Scene.rootNode.childNodes[0])
}
//scene.rootNode.childNode(withName: "test1 reference", recursively: true) being the oldChild
//test3Scene.rootNode.childNodes[0] being the new one
任何人都可以帮助完成这项工作吗?感谢您的宝贵时间
childNode(withName:recursively:)
方法 returns 一个可选的 (SCNNode?
) 但 replaceChildNode(_:with:)
需要一个 SCNNode
.
在调用中使用之前,您需要解包可选。
此外,在调用站点同时使用参数标签和参数名称也存在问题。这是无效的。参见 Function Argument Labels and Parameter Names。
scene.rootNode.replaceChildNode(_, oldChild: A
with newChild: B)
应该是
scene.rootNode.replaceChildNode(A,
with: B)
我正在尝试用另一个 .scn 文件中的另一个节点替换主 .scn 中的一个节点。 我找到了
的方法 func replaceChildNode(_ oldChild: SCNNode,
with newChild: SCNNode)
但是当我实现它的时候。在我的代码中,我收到 1 个警告和 2 个错误:
warning= Expression implicitly coerced from 'SCNNode?' to 'Any'
error= 1.expected seperator (after with), 2.use of unresolved identifier 'with'.
即使在错误一修复 1 之后仍然出现错误 2 和警告
我按以下方式定义了我的节点:
var scene:SCNScene!
var test3Scene:SCNScene!
在加载程序中变为:
scene = SCNScene(named: "art.scnassets/x1.scn")
test3Scene=SCNScene(named: "art.scnassets/test3.scn")
相关函数如下所示:
@objc func buttonClicked(){
print("clicked")
sceneView.allowsCameraControl = false
if(selection=="avatar"){
scene.rootNode.replaceChildNode(_, oldChild: scene.rootNode.childNode(withName: "test1 reference", recursively: true),
with newChild: test3Scene.rootNode.childNodes[0])
}
//scene.rootNode.childNode(withName: "test1 reference", recursively: true) being the oldChild
//test3Scene.rootNode.childNodes[0] being the new one
任何人都可以帮助完成这项工作吗?感谢您的宝贵时间
childNode(withName:recursively:)
方法 returns 一个可选的 (SCNNode?
) 但 replaceChildNode(_:with:)
需要一个 SCNNode
.
在调用中使用之前,您需要解包可选。
此外,在调用站点同时使用参数标签和参数名称也存在问题。这是无效的。参见 Function Argument Labels and Parameter Names。
scene.rootNode.replaceChildNode(_, oldChild: A
with newChild: B)
应该是
scene.rootNode.replaceChildNode(A,
with: B)