Простое создание многомерных массивов

Научился сам? Помоги начинающему.

Простое создание многомерных массивов

Сообщение Olrandrim 29 май 2014, 22:21

Захотел создать такой вот мини-урок по созданию массивов в Unity. Я думаю для многих начинающих разработчиков этот вопрос актуален.
На самом деле все просто.

Создание одномерного массива:

Синтаксис:
Используется csharp
int[] numbers = new int[5]; //создали массив типа int на 5 ячеек (индексы 0-4)

void Start ()
{
numbers[1] = 3; //задаем значение 2 ячейке массива

print (numbers[1]); //выводим значение в консоль
}
 


Создание 2-мерного массива:

Синтаксис:
Используется csharp
int[,] numbers = new int[5,5];

void Start ()
{
numbers[0,1] = 3;

print (numbers[0,1]);
}
 


Создание 3-мерного массива:

Синтаксис:
Используется csharp
int[,,] numbers = new int[5,5,5];

void Start ()
{
numbers[0,0,1] = 3;

print (numbers[0,0,1]);
}


Это примеры создания массивов простых чисел, но таким же образом можно создать массивы для любых типов данных.
Надеюсь, я помог вам разобраться с массивами.
Olrandrim
UNец
 
Сообщения: 7
Зарегистрирован: 27 май 2014, 19:55

Re: Простое создание многомерных массивов

Сообщение 2rusbekov 30 май 2014, 09:05

Научи еще пользоваться Hashtable'ами и Dictionary<>.
Still alive...
Аватара пользователя
2rusbekov
Адепт
 
Сообщения: 1409
Зарегистрирован: 06 апр 2012, 12:57
Откуда: Бишкек

Re: Простое создание многомерных массивов

Сообщение Tolking 30 май 2014, 10:48

Лучше бы объяснил нафига вообще нужны массивы.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Простое создание многомерных массивов

Сообщение Olrandrim 30 май 2014, 12:05

Массив - последовательность (список) однотипных данных, используется для быстрого и удобного оперирования большими обьемами данных.

Например, я чаще всего использую массивы для реализации сетки игрового поля, для чего создаю 2-мерный массив, представляющий x и y координаты ячеек поля, и в них заношу необходимые свойства и функции.
Применений массивов - великое множество, сколько позволяет ваша фантазия. Реализация некоторых игровых фич (например, инвентаря игрока) без использования массивов весьма трудноосуществима. Инвентарь - по сути та же сетка 2-мерного массива. Также в массивах я храню характеристики игровых предметов (если это 2-мерный массив, то 1 массив - список предметов, 2 - набор характеристик каждого предмета). Если бы все это записывать в виде отдельных переменных, то получится большая трудночитаемая куча данных, в которых сам разработчик может и запутаться. С массивами все получается удобно и под рукой.

И, наверно, главное достоинство массивов - волшебство цикла for. Порой он заменяет целые тома кода, делая огромное количество нужных операций несколькими строчками кода. Массивы и цикл for - мощная связка и удобный инструмент разработки. Советую всем, кто еще не практиковался с этими вещами, освоить их. Они еще не раз вам пригодятся и облегчат разработку.

Также я могу подготовить небольшие уроки по словарям (Dictionaries) и спискам List (более функциональный, но и более медленный тип массивов). С хэш-таблицами я еще толком не знаком, потому пока не могу рассказать о них.

Еще я могу подготовить примеры использования массивов в практике разработки игр (например, игровая сетка, база данных игровых предметов, инвентарь и т.д.) Если кому интересно.
Последний раз редактировалось Olrandrim 31 май 2014, 10:45, всего редактировалось 1 раз.
Olrandrim
UNец
 
Сообщения: 7
Зарегистрирован: 27 май 2014, 19:55

Re: Простое создание многомерных массивов

Сообщение Diab10 30 май 2014, 16:08

Статья по теме массивов и списков в юнити: http://habrahabr.ru/post/142285/
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Простое создание многомерных массивов

Сообщение Olrandrim 31 май 2014, 11:01

(конвертация, string to int)

Кстати, одна интересная вещь.

В Юнити конвертировать строковую переменную в числовую простым приведением типа нельзя. Но было бы очень удобно создать массив строковых значений, для базы данных игровых предметов например. Тогда и все описания и числовые характеристики предмета можно держать в одном месте. Я порылся немного на оф. форуме Юнити и нашел один метод, которого нету по моему в документации. Как перевести строковое значение в числовое:

Синтаксис:
Используется csharp
string text = "1";

int number = System.Int32.Parse (text);


Эта функция возвращает эквивалентное строке 32-битовое число.
Olrandrim
UNец
 
Сообщения: 7
Зарегистрирован: 27 май 2014, 19:55

Re: Простое создание многомерных массивов

Сообщение Diab10 31 май 2014, 11:14

c#:
int gg = int.Parse("344");

js:
var gg : int = parseInt("344");
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Простое создание многомерных массивов

Сообщение llka 31 май 2014, 11:45

Почему про самые популярные списки ни чего нет вроде List и Dictionary?
Листы тоже очень легко создавать, наверное с ними работать еще легче чем с массивами.
llka
UNIверсал
 
Сообщения: 359
Зарегистрирован: 08 янв 2014, 05:00

Re: Простое создание многомерных массивов

Сообщение Olrandrim 31 май 2014, 12:53

llka писал(а):Почему про самые популярные списки ни чего нет вроде List и Dictionary?
Листы тоже очень легко создавать, наверное с ними работать еще легче чем с массивами.


Про списки и словари я тоже напишу, чуть позже.
List не проще в работе, даже наоборот, кода гораздо больше получается. Просто у него своя функция - он может хранить данные любых типов, но сделать 2/3 мерный массив списками сложно. Плюс массивы работают намного быстрее списков, потому при больших обьемах данных производительность возрастает, когда используются массивы.
Olrandrim
UNец
 
Сообщения: 7
Зарегистрирован: 27 май 2014, 19:55

Re: Простое создание многомерных массивов

Сообщение Olrandrim 31 май 2014, 13:01

Diab10 писал(а):c#:
int gg = int.Parse("344");

js:
var gg : int = parseInt("344");


Да, так работает, проверил. Так даже проще чем то что я нашел.
Olrandrim
UNец
 
Сообщения: 7
Зарегистрирован: 27 май 2014, 19:55


Вернуться в Уроки

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

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