что не так с скриптом? Двухмерный масив!!

Программирование на Юнити.

что не так с скриптом? Двухмерный масив!!

Сообщение Toni_NeNar 18 ноя 2017, 14:26

вот ошибка: IndexOutOfRangeException: Array index is out of range

Синтаксис:
Используется csharp
    public int[,] Bords;
    public int Size;

    void Start()
    {
        CreateBord();
    }

    void CreateBord()
    {
        for (int x = 0; x < Size + 1; x++)
        {
            for (int y = 0; y < Size + 1; y++)
            {
                   Bords[x, y] = 0;
            }
        }
    }
Последний раз редактировалось Toni_NeNar 18 ноя 2017, 14:31, всего редактировалось 1 раз.
Toni_NeNar
UNец
 
Сообщения: 15
Зарегистрирован: 13 ноя 2017, 23:30

Re: что не так с скриптом? Двухмерный масив!!

Сообщение Anonymyx 18 ноя 2017, 14:31

Вы не создали массив, а просто объявили ссылку.
Синтаксис:
Используется csharp
public int[,] Bords;
    public int Size;

    void Start()
    {
        Bords = new int[Size, Size];
        CreateBord();
    }

И + 1 не нужен в цикле.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: что не так с скриптом? Двухмерный масив!!

Сообщение Toni_NeNar 18 ноя 2017, 14:40

Anonymyx писал(а):Вы не создали массив, а просто объявили ссылку.
Синтаксис:
Используется csharp
public int[,] Bords;
    public int Size;

    void Start()
    {
        Bords = new int[Size, Size];
        CreateBord();
    }

И + 1 не нужен в цикле.

не помогло
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Mehamic : MonoBehaviour {

    public int[,] Bords;

    // public GameObject[] Component;
    public int Size;

    //private GameObject CreatComponent;

    void Start()
    {
        Bords = new int[Size, Size];
        CreateBord();
        //Spawn();
    }

    void CreateBord()
    {
       

        for (int x = 0; x < Size + 1; x++)
        {
            for (int y = 0; y < Size + 1; y++)
            {
               
                Bords[x, y] = 0;
            }
        }
    }


}
 

ERROR

IndexOutOfRangeException: Array index is out of range.
Mehamic.CreateBord () (at Assets/Mehamic.cs:30)
Mehamic.Start () (at Assets/Mehamic.cs:17)
Toni_NeNar
UNец
 
Сообщения: 15
Зарегистрирован: 13 ноя 2017, 23:30

Re: что не так с скриптом? Двухмерный масив!!

Сообщение Anonymyx 18 ноя 2017, 15:02

Я же написал, +1 не нужен.
Size - количество элементов. Индексация начинается с 0!
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: что не так с скриптом? Двухмерный масив!!

Сообщение Toni_NeNar 18 ноя 2017, 15:06

Огромное спасибо я с этими массивами напрягся не увидел
Toni_NeNar
UNец
 
Сообщения: 15
Зарегистрирован: 13 ноя 2017, 23:30

Re: что не так с скриптом? Двухмерный масив!!

Сообщение Anonymyx 18 ноя 2017, 16:18

И кстати,
Синтаксис:
Используется csharp
 for (int x = 0; x < Size + 1; x++)
        {
            for (int y = 0; y < Size + 1; y++)
            {
               
                Bords[x, y] = 0;
            }
        }

Этот код не имеет смысла, так как int структурный тип и по умолчанию уже имеет значение которое и равно 0.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7