-5

ここにいくつかのコードがあります。すべてではありませんが、重要なコードだと思います:

public int Laenge = 10;
public int Breite = 10;
public Vector3[] new_Ver = new Vector3[300];
public Vector3[,] new_Ver_s = new Vector3[11,11];
public Vector2[] new_UV = new Vector2[300];
public Vector2[,] new_UV_s = new Vector2[11,11];
public int[] new_Tri =  new int[300];

void Start () { 
int n=0;

    for(int l=0;l<=Laenge;l++)
    {
        int k = 0;
        for(int b=0;b<=Breite;b++)
        {
            Debug.Log(l);Debug.Log(b);Debug.Log(n+"n");

            if(l<Laenge || b<Breite)
            {
                Debug.Log(l);Debug.Log(b);Debug.Log(n+"n");

                if(b%2 == 1)
                {
                    Debug.Log(l);Debug.Log(b);Debug.Log(n+"n");
                    new_Ver[n]=new_Ver_s[l,b];
                    new_UV[n]=new_UV_s[l,b];
                    n++;
                    new_Ver[n]=new_Ver_s[1+l,1+b];
                    new_UV[n]=new_UV_s[1+l,1+b];
                    n++;
                    new_Ver[n]=new_Ver_s[1+l,b];
                    new_UV[n]=new_UV_s[1+l,b];
                    n++;
                }
                else
                {
                    Debug.Log(l);Debug.Log(b);Debug.Log(n+"nl");
                    Vector3 pop = new_Ver_s[l,b];
                    Debug.Log(l);Debug.Log(b);Debug.Log(n);//All debug. logs are zero
                    new_Ver[n] = pop; //This is the line where it gives the error message : Array index is out of range. 
                    new_UV[n]= pop;
                    Debug.Log(l);Debug.Log(b);Debug.Log(n);
                    n++;
                    pop = new_Ver_s[l,1+b];
                    new_Ver[n]=pop;
                    new_UV[n]=pop;
                    n++;
                    pop=new_Ver_s[1+l,b];
                    new_Ver[n]=pop;
                    new_UV[n]=pop;
                    n++;
                    Debug.Log(l);Debug.Log(b);Debug.Log(n+"neo");
                }

                Debug.Log(l);Debug.Log(b);Debug.Log(n+"n");
            }

            if(b>1 || l<Laenge)
            {
                Debug.Log(l);Debug.Log(b);Debug.Log(n+"fn");
                if(b%2 ==1)
                {
                    Debug.Log(l);Debug.Log(b);Debug.Log(n+"f");
                    new_Ver[n]=new_Ver_s[l,b];
                    new_UV[n]=new_UV_s[l,b];
                    n++;
                    new_Ver[n]=new_Ver_s[l+1,b];
                    new_UV[n]=new_UV_s[l+1,b];
                    n++;
                    new_Ver[n]=new_Ver_s[l+1,b-1];
                    new_UV[n]=new_UV_s[l+1,b-1];
                    n++;
                }
                else
                {
                    Debug.Log(l);Debug.Log(b);Debug.Log(n+"f");
                    new_Ver[n]=new_Ver_s[l,b];
                    new_UV[n]=new_UV_s[l,b];
                    n++;
                    new_Ver[n]=new_Ver_s[l+1,b];
                    new_UV[n]=new_UV_s[l+1,b];
                    n++;
                    new_Ver[n]=new_Ver_s[l,b-1];
                    new_UV[n]=new_UV_s[l,b-1];
                    n++;
                }
            }
        }
    }
}

これはかなりのコードです。コメントがある if ブラケットは、最初に通過する場所ですが、コメントのある行で停止します。すべての debug.log はゼロです。コードの一部が不明な場合は、コメントで質問してください。

問題は、なぜエラーメッセージが表示されるのかということです。2次元配列で同様のことをしても問題ありません。要素が空だからですか?

完全なエラー メッセージ:

IndexOutOfRangeException: 配列インデックスが範囲外です。meshmut.Start () (Assets/meshmut.cs:88)

わかりました。コードは正しいです。Unity3d で何か問題が発生したため、いくつかをリセットする必要がありました。他の間違いを見せてくれてありがとう。

4

2 に答える 2