Как записать в многомерный массив из вложенного l oop в C#? - PullRequest
0 голосов
/ 23 марта 2020

Я новичок в C#. Я пишу код в Unity, который создает несколько (9, 3x3) кубов, и я использую 3 вложенных цикла fori. Когда кубы созданы, мне нужно сохранить их ID, x, y, z, позицию в массиве. Я пытаюсь и лоток и не могу узнать, как сохранить эти значения в массив. Может кто-то помочь мне с этим? Спасибо и хорошего дня.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MakeCube01 : MonoBehaviour
{
    public GameObject cublet;

    public int cubeID = 0;
    int rowNum = 3; //x
    int columnNum = 3; //y
    int layerNum = 3; //z
    int numberOfCubes;
    //int structureDimension = 3;
    public int[,] cubeStartPositions; 

    // Start is called before the first frame update
    void Start()
    {
        numberOfCubes = rowNum * columnNum * layerNum;
        cubeStartPositions = new int[numberOfCubes, 4];   //row cube, column ID,x,y,z
        for (int startX = 0; startX < rowNum; startX++)
        {
            for (int startY = 0; startY < columnNum; startY++)
            {
                for (int startZ = 0; startZ < layerNum; startZ++)
                {
                    Instantiate(cublet, new Vector3(startX, startY, startZ), new Quaternion(0, 0, 0, 0));

                    //write in array cubeId, x, y, z.
                    cubeStartPositions =    //????

                    Debug.Log("number of cubes:" + numberOfCubes + " ID:" + cubeID + " x:" + startX + " y:" + startY + " z:" + startZ);
                    cubeID++;
                }
            }
        }       
    }
}

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Вам нужно создать 3-х мерный массив вместо 2 новых int [x, y, z]

0 голосов
/ 23 марта 2020

Вам нужен массив, имеющий три измерения, но вы определили его только с двумя. Вы должны определить свой массив следующим образом, используя две запятые (разделяя 3 индекса):

public int[,,] cubeStartPositions;

Затем инициализируйте его следующим образом:

cubeStartPositions = new int[x, y, z];   
...