Массивы
|
|
vampir0305 | Дата: Четверг, 19 Марта 2015, 20:03 | Сообщение # 1 |
Unity C# Programmer
Сейчас нет на сайте
| Как мне записать в массив несколько объектов и потом прочитать их все из этого массива?
Кароче мне надо записать блоки в массив Код blocks[0] = obj_grass blocks[1] = obj_rock blocks[2] = obj_wood blocks[3] = obj_dirt
И прочитать потом в этой функции все эти блоки Код for(i=0; i < 4; i+=1) { blocks[i] = i }
if !collision_line(x,y,obj_hero.x,obj_hero.y,blocks[i],false,false)
Я думаю вы поняли. Так как же это сделать?
Красочная сюжетно-ориентированная игра-головоломка
|
|
| |
aFriend | Дата: Четверг, 19 Марта 2015, 20:11 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Не вижу смысла заносить их в массив: можно просто создать обьект-родитель для этих обьектов, но если создать массив все-таки нужно, то как вариант, можно создавать твоим способом:Цитата vampir0305 ( ) blocks[0] = obj_grass blocks[1] = obj_rock blocks[2] = obj_wood blocks[3] = obj_dirt а читать: Код for(i=0; i < 4; i+=1) { if(!collision_line(x,y,obj_hero.x,obj_hero.y,blocks[i],false,false)){ что-то делать; break (при необходимости); } }
Сообщение отредактировал aFriend - Четверг, 19 Марта 2015, 20:15 |
|
| |
XDominator | Дата: Пятница, 20 Марта 2015, 09:07 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| Я конечно могу ошибаться, но насколько я помню, попытка внесения метаданных в виде имени объекта в переменную приведет не к занесению имени объекта, а к занесению id первого(или последнего) созданного instance этого класса, потому этот код работать не будет. Чтобы организовать такую штуку, нужно будет пользоваться execute или execute_string (не помню как там оно точно называется, нет под рукой мануала.
Проще говоря, это будет выглядеть как то так:
Код blocks_names[0] = "obj_grass"; blocks_names[1] = "obj_rock"; ...
А уже дальше начинается всякая магия и шаманство. Например, если мы хотим создать по 1му инстансу каждого класса из нашего массива, то нужно использовать примерно вот такой костыль:
Код i = 0;
while (i < massive_size) { execute_string("instances[" + string(i) + "] = create_instance(100, 100, " + blocks_names[i] +");"); i++; }
При компиляции получатся следующие 2 выражения в коде на этом месте:
execute_string("instances[0] = create_instance(100, 100, obj_grass);"); execute_string("instances[1] = create_instance(100, 100, obj_rock);");
Вот как то так...
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |
Eshford | Дата: Пятница, 20 Марта 2015, 09:59 | Сообщение # 4 |
Богиня Гамака ♥
Сейчас нет на сайте
| Крайне не рекомендую использовать execute_string() поскольку функция давно не поддерживается в более новых версиях. Если планируется компиляция на новых версиях, придется код переписать.
|
|
| |
XDominator | Дата: Пятница, 20 Марта 2015, 11:03 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Да, реально. Выходит что сейчас такое можно реализовать только копируя код до бесконечности?
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |
OpenGOO | Дата: Пятница, 20 Марта 2015, 13:23 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Тоже самое, но в стиле GMS
Код instances[i] = create_instance(100, 100, asset_get_index(blocks_names[i]));
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |
aFriend | Дата: Пятница, 20 Марта 2015, 15:55 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Цитата vampir0305 ( ) Как мне записать в массив несколько объектов и потом прочитать их из этого массива?
|
|
| |