C#在循环

时间:2016-03-21 20:42:12

标签: c# arrays loops matrix unity3d

我试图创建一个矩阵并用字符串填充它以便我以后可以操作它,继承我的代码

using UnityEngine;
using System.Collections;

public class ScenarioMatrix : MonoBehaviour {

    public GFRectGrid _grid;
    public string[,] _scenarioArray;
    /*
    USAREMOS A SEGUINTE NOMECLATURA PARA O GRID
    E = GRID VAZIO TEM SOMENTE O CENARIO
    SP = Spawn Point, é onde o player começa
    EP = é onde o player termina
    L = Lajota é o caminho onde o player pode andar
    CG = color get, é onde o bloco pega uma cor
    CD = color drop é onde o bloco deixa a cor
    */
    private string[] _values = {"E","SP","EP","L","CG","CD" };

    // Use this for initialization
    void Start() {

        _scenarioArray = new string[(int)_grid.size.x, (int)_grid.size.z];

        //montamos o array
        for (int _largura = 1; _largura <= _grid.size.x; _largura++)
        {
            for (int _comprimento = 1; _comprimento <= _grid.size.z; _comprimento++)
            {
                string _valor = _values[Random.Range(0, _values.Length-1)];
                _scenarioArray[_largura, _comprimento] = _valor;
                //Debug.Log(_values[Random.Range(0, _values.Length)]);
            }

        }
        Debug.Log(_scenarioArray);
    }


    // Update is called once per frame
    void Update () {

    }
}

到目前为止,我得到了错误 IndexOutOfRangeException:数组索引超出范围。 ScenarioMatrix.Start()(在Assets / Game / Scripts / ScenarioMatrix.cs:30)

我在这段代码中做错了什么?

1 个答案:

答案 0 :(得分:2)

_comprimento <= _grid.size.z替换为_comprimento < _grid.size.z

带有_largura <= _grid.size.x

_largura < _grid.size.x

数组索引基于0(从0开始,而不是1)