Xcode ARKit报错‘SCNNode类型无materials成员’的解决方法
解决SCNNode无'materials'成员的报错问题
嘿,这个问题很常见,我一眼就看出问题所在啦!
错误原因
你收到的报错value of type 'SCNNode' has no member 'materials',核心原因是材质属性不属于SCNNode本身——SCNNode只是场景中的容器节点,它的视觉外观由其geometry(几何体)属性决定,而materials是几何体对象(比如你这里的SCNBox)的属性,不是节点的。
另外从你写的cubeNode.materi...来看,还存在拼写不完整的问题(应该是materials),不过先解决归属问题才是关键。
修正后的代码
这里是调整好的完整代码,我把关键修正标出来了:
func randomFloat(min: Float, max: Float) -> Float { return (Float(arc4random()) / 0xFFFFFFFF) * (max - min) + min } let zCoords = randomFloat(min: -2, max: -0.2) let cubeNode = SCNNode(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)) cubeNode.position = SCNVector3(0, 0, zCoords) let mate = SCNMaterial() mate.diffuse.contents = UIColor.green // 关键修正:访问几何体的materials属性,替换为你创建的绿色材质 cubeNode.geometry?.materials = [mate]
额外小技巧
如果你的立方体只需要一种材质,用firstMaterial会更简洁,效果完全一样:
cubeNode.geometry?.firstMaterial = mate
这样修改后,你的AR立方体就能正确显示绿色材质啦!
内容的提问来源于stack exchange,提问作者Tomi
相关产品推荐
相关产品推荐

