生成空心立方体矩阵

时间:2019-02-19 19:23:20

标签: c# unity3d math

我想生成体积为 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
                    };
                }
            }
        }
    }
}

1 个答案:

答案 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; ...)

这很难读