Пятница, 19 Апреля 2024, 21:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Надо удалить все объекты из определенной группы. (GML код.)
Надо удалить все объекты из определенной группы.
михаДата: Воскресенье, 15 Мая 2011, 14:18 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Мне нужен такой код, который удаляет все существующие объекты из опр. группы. Хотя на карте одновременно будет только 1. Я не хочу прописывать удаление на каждый объект, если их будет 10-20. То-есть код на Русском:
Найти и удалить все существующие объекты в комнате из этой группы:(объект1,объект2,объект3,объект4,объект5).
GameMixДата: Воскресенье, 15 Мая 2011, 14:22 | Сообщение # 2
старожил
Сейчас нет на сайте
миха, можно удалить только вручную smile .

Steel Standoff - 2D аркада.
Мои статьи
vsDaTavsДата: Воскресенье, 15 Мая 2011, 14:29 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Quote
Найти и удалить все существующие объекты в комнате из этой группы:(объект1,объект2,объект3,объект4,объект5).

Если в настройках объекта назначить родителя, то таким образом можно создать целую группу. Например:
obj0
obj1(назначить родителя obj0)
obj2(назначить родителя obj0)
весь код, прописанный для object0 также исполняется и в "дочерних" объектах

далее дело за малым в объекте родителе пишем:
<условие>
< instance_destroy() >



http://farchive.jino.ru/

Сообщение отредактировал vsDaTavs - Воскресенье, 15 Мая 2011, 14:42
ЙакудДата: Воскресенье, 15 Мая 2011, 15:06 | Сообщение # 4
участник
Сейчас нет на сайте
У каждого объекта создаем переменную group.

Чтобы удалить определенную группу, делаем так:

Code
with(all)
{
   if(group == 1)
     instance_destroy();
}

Данный код удалит объекты группы 1


"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0
михаДата: Воскресенье, 15 Мая 2011, 16:46 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
vsDaTavs, Дело в том, что эти объекты - руки с РАЗНЫМ оружием. Там не может быть одинакового кода.
Йакуд, я попробую использовать данный код.
Dva_KotaДата: Воскресенье, 15 Мая 2011, 17:10 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Quote (миха)
vsDaTavs, Дело в том, что эти объекты - руки с РАЗНЫМ оружием. Там не может быть одинакового кода.

Какого одинакового кода? Просто создаешь пустой объект-родитель (его деже в комнату не нужно ставить), а когда тебе нужно уалить все объекты из этой группы выполняешь код:
Code
with(объект-родитель)
{
      instance_destroy();
}

И не нужно будет дополнительные переменные создавать.


Новый пример инвентаря! /20.06.2012/

Energy Wars
ЙакудДата: Воскресенье, 15 Мая 2011, 17:51 | Сообщение # 7
участник
Сейчас нет на сайте
Dva_Kota, мне кажется, что система с доп переменной будет работать побыстрее, чем на каждый тип своего родителя создавать..

"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0
vsDaTavsДата: Воскресенье, 15 Мая 2011, 19:26 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Quote
Там не может быть одинакового кода.

А вы меня не правильно поняли.Как правильно заметил Dva_Kota код для каждого объекта универсален, но кроме того они все наследуют код родителя, который может составлять лишь нужное вам удаление этиъ объектов

Добавлено (15.05.2011, 19:26)
---------------------------------------------

Quote
Dva_Kota, мне кажется, что система с доп переменной будет работать побыстрее, чем на каждый тип своего родителя создавать..

каждому объекту присвоить родителя, или каждому объекту приписать переменную, разница?
Разве что в вашем случае надо так же каждому объекту приписать то же удаление объектов / Есть, объем кода сказывается на размере
Я за оптимизацию tongue


http://farchive.jino.ru/

Сообщение отредактировал vsDaTavs - Воскресенье, 15 Мая 2011, 21:00
Dva_KotaДата: Воскресенье, 15 Мая 2011, 21:34 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Quote (Dva_Kota)
Dva_Kota, мне кажется, что система с доп переменной будет работать побыстрее, чем на каждый тип своего родителя создавать..

На сколько я понял у него всего одна группа (оружие) по этому будет нужен лишь один родитель. И с родителем, думаю, будет работать быстрее, т.к. в твоем случае проверяются все объекты в комнате ("with(all)"), а в случае с родителем - не будет выполняться проверка для каждого объекта, а просто удалятся все объекты для которых указанный в коде объект будет родителем.


Новый пример инвентаря! /20.06.2012/

Energy Wars
ЙакудДата: Воскресенье, 15 Мая 2011, 23:08 | Сообщение # 10
участник
Сейчас нет на сайте
Dva_Kota, Ну а кто мешал обратиться к одному родителю и удалить лишние объекты? Я привел как пример только. Просто если на каждый тип создавать несколько родителей (родитель - объект), то это скушает больше памяти, чем один основной родитель и одна переменная на объект..

"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0
Made_In_USSRДата: Понедельник, 16 Мая 2011, 00:11 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Чушь какая...
Код будет работать только если каждый из обьектов содержит переменную group. Но это конечно же намного продуктивнее чем создать родителя smile


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
ЙакудДата: Понедельник, 16 Мая 2011, 00:15 | Сообщение # 12
участник
Сейчас нет на сайте
Made_In_USSR, что мешает сделать вот так???

Code
with(parent)  
{  
   if(variable_local_exists('group'))
   if(group == 1)  
     instance_destroy();  
}


"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0
Made_In_USSRДата: Понедельник, 16 Мая 2011, 08:42 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Тоесть родителя все таки создавать нужно smile
А зачем тогда лепить сюда еще и переменную, если одного родителя достаточно?


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
vsDaTavsДата: Понедельник, 16 Мая 2011, 09:19 | Сообщение # 14
почетный гость
Сейчас нет на сайте
Quote
Просто если на каждый тип создавать несколько родителей (родитель - объект)

что-то я не понял смысл этой фразы. Каждому объекту можно присвоить лишь 1 родителя или 1 переменную group. Но я лично пользуюсь родителем, поскольку я создаю множество подобных объектов, а код пишу лишь 1 раз.


http://farchive.jino.ru/

Сообщение отредактировал vsDaTavs - Понедельник, 16 Мая 2011, 09:23
Made_In_USSRДата: Понедельник, 16 Мая 2011, 10:00 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Родитель нужен не для каждого обьекта группы, а для каждой группы обьектов. Переменная не нужна.

Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
ЙакудДата: Понедельник, 16 Мая 2011, 11:17 | Сообщение # 16
участник
Сейчас нет на сайте
Made_In_USSR, ты меня не понял... один родитель - общий для всех групп. Например, один родитель "оружее", а там уже все остальные объекты являются потомками этого родителя. И достаточно будет обратиться к этому родителю и удалить объекты определенной группы. Это будет быстрее, чем искать к какому родителю нужно будет обращаться.

Примерная схема:


Все эти объекты, являются потомками объекта weapon
при таком раскладе нужно будет обратиться только к одному объекту weapon и найти переменную группы. А если делать вашим способом, то для каждой группы получится нужно отдельный объект. А это не есть хорошо.


"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0
Made_In_USSRДата: Понедельник, 16 Мая 2011, 11:48 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
Группа оружие:
1. Обьект pistol
2. Обьект shotgun
3. Обьект rifle
4. Обьект bazuka

Удаляем родителя группы "оружие", вместе со всем оружием. Это именно то, что нужно автору, если ты внимательно читал первый пост.
Опять же, для групп "оружие", "патроны", "аптечки", "броня" и т.д. можно создать еще одного родителя, который удаляет все предметы всех групп. В любом случае приходится либо создавать родителя, либо переменную для абсолютно всех обьектов, и проверять каждый (в то время как дочерние обьекты проверяются только в родительском списке и не требуют памяти на лишние переменные).
Нужно учесть, что обьекты pistol могут быть также обьеденены в группу (если пистолей несколько видов). Если использовать переменную, то ко всем прочим недостаткам использования переменных добавится еще и копипаст кода всего обьекта. В общем ни одного аргумента "за" я не вижу в упор, как бы ты не перекручивал свои же слова на новый манер.


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
ЙакудДата: Понедельник, 16 Мая 2011, 12:27 | Сообщение # 18
участник
Сейчас нет на сайте
Made_In_USSR, смотри, вся фишка объекта-родителя в том, что нужно создать только один объект и никаких дополнительных. Есть один единый объект. Например, weapon. Создавая копию этого объекта, можно указать сразу тот тип, который нужен, так же можно указать и группу при создании.
Получается так:

Code

var item;
item = instance_create(x, y, weapon);
item.type = 'pistol'; // Любой тип
item.group = 1;

Все. Более ничего не требуется. Теперь нужно всего лишь оформить правильно объект weapon. Отсюда компактность кода, не нужно создавать большое кол-во объектов, экономия памяти, удобность обращения.


"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0
Made_In_USSRДата: Понедельник, 16 Мая 2011, 13:31 | Сообщение # 19
заслуженный участник
Сейчас нет на сайте
Я не вижу связи с сабжем. Группа оружие содержит обьекты а не подгруппы обьектов.
Группа (родитель)
|__\
|___\
о1__о2

Группа (родитель)
|__________\
| __________\
гр1 (var)____ гр2(var)
| ____________\
| _____________\
о1 _____________о2

В обоих случаях в результате удаления родителя будут удалены дочки. Переменные - ненужное промежуточное звено.


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)


Сообщение отредактировал Made_In_USSR - Понедельник, 16 Мая 2011, 13:35
vsDaTavsДата: Понедельник, 16 Мая 2011, 14:35 | Сообщение # 20
почетный гость
Сейчас нет на сайте
Йакуд. Я разделяю мнение Made_In_USSR. Впрочем я также как он говорил изначально. И как бы вы не меняли пересказ своих слов, все что вы описали, можно сделать и через родителя-объекта. И притом мне кажется так будет комкатней с точки зрения хранения кода

http://farchive.jino.ru/
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Надо удалить все объекты из определенной группы. (GML код.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг