我有一个SCNPlane对象数组,我想向每个对象添加不同的图像。我的问题是,每当在for循环中初始化SCNPlanes时,每个平面最终都会得到完全相同的图像。这基本上是我的循环的样子:
var layer = [CALayer](count: 8, repeatedValue: CALayer())
var tmpPhoto = [CGImage]()
for var i = 0; i < 8; ++i{
tmpPhoto.append("image data")
layer[i].contents = tmpPhoto[i]
layer[i].frame = CGRectMake(0, 0, "image width", "image height")
//initialize the SCNPlane and add it to an array of SCNNodes
plane[i].geometry?.firstMaterial?.locksAmbientWithDiffuse = true
plane[i].geometry?.firstMaterial?.diffuse.contents = layer[i]
//add SCNPlane constraints
}
我注意到的是,显示的图像将是最后添加/更改的图像。我知道这一点,因为在此循环之后,我尝试仅修改平面数组中的第一个条目。在运行时,第一个数组条目的映像将显示在所有其他SCNPlanes上!请记住,我根本没有使用displayLayer()或setNeedsDisplay()。
这是我尝试过的:
我会错过一些重要的东西吗?
编辑:忘记了一行。
最佳答案
为每个SCNPlane
创建一个不同的SCNNode
。如果为多个节点创建一个SCNPlane
,则它们将共享几何。在几何图形上设置材质将更改所有使用该几何图形的节点。
关于ios - 无法将多个图像用于SCNPlane数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34595179/