不能为 SCNPlane 阵列使用多个图像

Can't use multiple images for SCNPlane array

我有一组 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
}

我注意到显示的图像将是 added/altered 的最后一张图像。我知道这是因为在这个循环之后,我尝试只修改平面数组中的第一个条目。在 运行 时间,第一个数组条目的图像将显示在所有其他 SCNPlanes 上!请记住,我根本没有使用 displayLayer() 或 setNeedsDisplay()。

这是我尝试过的:

我会不会遗漏了什么重要的东西?

编辑: 忘记了一行。

为每个 SCNNode 创建一个不同的 SCNPlane。如果您为多个节点创建一个 SCNPlane,那么它们将共享几何体。在几何体上设置 material 将更改使用该几何体的所有节点。