Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SCNNode:每个单独节点的随机颜色,不是全部斯威夫特,斯切内基特_Ios_Swift_Random_Colors_Scenekit - Fatal编程技术网

Ios SCNNode:每个单独节点的随机颜色,不是全部斯威夫特,斯切内基特

Ios SCNNode:每个单独节点的随机颜色,不是全部斯威夫特,斯切内基特,ios,swift,random,colors,scenekit,Ios,Swift,Random,Colors,Scenekit,如果我有一个函数,每当用户点击屏幕并更改多维数据集的颜色时,就会在前一个多维数据集旁边生成一个多维数据集,那么我如何确保每个多维数据集都可以成为随机颜色,而不是所有的多维数据集都成为相同的随机颜色?我不认为我可以对每个立方体使用相同的几何体,因为这样它将继承我最初提供给它的任何材质。我希望生成的每个立方体选择它自己的随机颜色,而不是所有立方体选择它在点击时选择的相同随机颜色。我有一个随机颜色函数,它可以工作。但是如果我生成5个立方体,点击屏幕,所有5个立方体都会变成相同的随机颜色。但是,我希望每

如果我有一个函数,每当用户点击屏幕并更改多维数据集的颜色时,就会在前一个多维数据集旁边生成一个多维数据集,那么我如何确保每个多维数据集都可以成为随机颜色,而不是所有的多维数据集都成为相同的随机颜色?我不认为我可以对每个立方体使用相同的几何体,因为这样它将继承我最初提供给它的任何材质。我希望生成的每个立方体选择它自己的随机颜色,而不是所有立方体选择它在点击时选择的相同随机颜色。我有一个随机颜色函数,它可以工作。但是如果我生成5个立方体,点击屏幕,所有5个立方体都会变成相同的随机颜色。但是,我希望每个立方体都是它自己的随机颜色。我正在使用Swift和SceneKit。提前谢谢你的帮助

  func randomColor2() -> UIColor{
    let red = CGFloat(drand48())
    let green = CGFloat(drand48())
    let blue = CGFloat(drand48())
    return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
}
现在我只是说,我的内心开始接触:

boxNodeMaterial.diffuse.contents = randomColor2

我还调用了createBox函数,它在原始框的旁边添加了另一个框节点。我想让第二个盒子选择它自己的随机颜色,而不是原来的颜色。我希望对添加的每个框继续执行此操作。框1可以是红色、绿色或蓝色。框2可以是红色、绿色或蓝色,框3等等。不是框1、框2、框3。例如,选择红色并使其颜色相同。

您似乎创建了多个
scngometry
,但它们共享相同的材质。 这将导致您描述的问题:更改一种材质的颜色将更改为所有长方体的颜色

为了避免这种情况,每次创建新框时,只需创建一个新的
scnmatary

//Create a new, unique material for each box
let material = SCNMaterial()
material.diffuse.contents = randomColor2()

//Copy the box (or create a new one)
let newBox = oldBox.copy()
newBox.firstMaterial = material

您似乎创建了多个
scngometry
,但它们都共享相同的材料。 这将导致您描述的问题:更改一种材质的颜色将更改为所有长方体的颜色

为了避免这种情况,每次创建新框时,只需创建一个新的
scnmatary

//Create a new, unique material for each box
let material = SCNMaterial()
material.diffuse.contents = randomColor2()

//Copy the box (or create a new one)
let newBox = oldBox.copy()
newBox.firstMaterial = material