Создать матрицу полого куба - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу сгенерировать матрицу кубов с объемом 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 голосов
/ 19 февраля 2019

Как насчет использования только внешних пределов и игнорирования всего, что находится между

// 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);
}

, как упоминал Элиасар, я также рекомендовал бы использоватьлучшее имя переменной, чем i, например, как сказал yourselve index.В конце концов, это просто имя, но оно чище.Однако я бы также рекомендовал переместить его за пределы определения for, например

int index = 0;
for(int x = 0; ...)

вместо

for(int index = 0 , x = 0; ...)

, которое очень трудно читать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...