我想生成体积为 x 的多维数据集矩阵,但是我只希望表面上的多维数据集(我可以看到的多维数据集)。 下一个代码完成了整个矩阵。我如何获得所需的东西?
public class World : MonoBehaviour
{
public GameObject cube;
public int volume;
private void Awake()
{
for (int i = 0, x = 0; x < volume; x++)
{
for (int y = 0; y < volume; y++)
{
for (int z = 0; z < volume; z++)
{
i++;
var go = Instantiate(cube);
go.name = "Cube " + i;
go.transform.position = new Vector3
{
x = x,
y = y,
z = z
};
}
}
}
}
}
答案 0 :(得分:2)
仅使用外部限制而忽略两者之间的任何内容
// ignores the cubes that are not placed on the limits
if (x != 0 && x != volume - 1 && y != 0 && y != volume - 1 && z != 0 && z != volume - 1) continue;
i++;
var go = Instantiate(cube);
go.name = "Cube " + i;
go.transform.position = new Vector3(x, y, z);
或者更容易理解
// only spawns cubes that are placed on the limits
if (x == 0 || x == volume - 1 || y == 0 || y == volume - 1 || z == 0 || z == volume - 1)
{
i++;
var go = Instantiate(cube);
go.name = "Cube " + i;
go.transform.position = new Vector3(x, y, z);
}
正如Eliasar所述,我还建议使用比i
更好的变量名,例如正如您自己所说的index
。最后,它只是一个名字,但更干净。但是,我也建议将其移出for
定义之外,例如
int index = 0;
for(int x = 0; ...)
代替
for(int index = 0 , x = 0; ...)
这很难读