На Гуи использую переменные "группа юнитов" типа массив. Чтобы их обнулять нужно прописать custom script. Возможно ли обнулить их все одной командой или необходимо прописывать для каждой callDestroy udg_***[1] и так далее до конца массива?

Принятый ответ

Да, по идее тебе не нужен массив групп, достаточно будет одной группы и массива целочисленных переменных. Делаешь ГРУППУ ИГРОКОВ (не Отряд юнитов), которые у тебя играют, там выбираешь у игрока в Отряд всех живых юнитов со способностью Налогоплательщик, записываешь в переменную их количество, потом очищаешь Отряд.

Пример:
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
20
5 лет назад
0
8gabriel8, спасибо за наглядный пример! А вот если, скажем, я решил сразу, не используя переменную, установить (дословно по карте)
Tax=Число юнитов в группе юнитов (юниты игрока Х при условии Налогоплательщик>0)
То есть, не создаю группу отдельным действием.
В данном случае необходимо удалять юнитов не из переменной, а вот так?
Загруженные файлы
3
26
5 лет назад
Отредактирован ScorpioT1000
3
Да, но у тебя всё равно остаётся сама группа, хоть и пустая. Причём так ты плодишь утечки. Грубо говоря, в таких случаях игра создаёт в памяти переменные групп с именами типа g0000, g0001, g0002 и так далее. Когда ты сразу создаёшь группу через переменную, то множество таких групп не создаётся и не утекает.
НО! Ещё раз обращаю внимание, что конкретно эта утечка будет незначительной.
Объект Вес утечки
Точка 0.361 кб
Группа 0.620 кб + 0.040 кб за каждого юнита в группе
Эффект 11.631 кб
То есть, если у тебя группа твоим способом за всю игру будет создана 1000 раз, то к концу игры на этом утечёт всего лишь 620 кб памяти. Которая после завершения карты освободится.
0
20
5 лет назад
0
8gabriel8, еще такой вопрос: функция "отряд-удалить всех юнитов" равносильна команде кастом скрипта call DestroyGroup(udg_X)?
0
26
5 лет назад
0
Нет. Убирая всех юнитов из группы ты не удаляешь её саму.
0
20
5 лет назад
Отредактирован Yury13
0
8gabriel8, то есть, если я буду еще и удалять группу после исключения из нее всех юнитов, то потом игра будет выполнять лишнюю работу, создавая ее заново?
8gabriel8, в таком случае, если я захочу переменной "Отряд" присвоить другую группу (юниты с другим условием), то старую нужно дополнительно удалять уже через кастом скрипт, чтобы не было наслоения? Если же я просто добавляю раз в промежуток времени разных юнитов в одну и ту же группу, достаточно удалять их из нее без скрипта? Сори, если запутанно излагаю идею.
0
26
5 лет назад
0
Очень запутано объяснил)
Представь, что у тебя есть пакет, в который ты закидываешь игрушечные фигурки - юнитов. Этот пакет и есть группа. Если все фигурки из пакета уберёшь, то он сам останется, выкинуть сам пакет можешь лишь через кастом скрипт. Когда пакет задан переменной, то это подписанный пакет, а когда делаешь так:
то каждый раз в новый пакет складываешь фигурки, после пересчёта убираешь их и получаешь со временем в итоге кучу пустых пакетов.

Вообще можно не заниматься приодическим пересчётом, а сделать два триггера на подсчёт налогоплательщиков. Первый будет реагировать на событие Юнит Входит в (Игровая область), условие Тип юнита (Юнит триггера/Переключающий юнит/Входящий юнит) равно Налогоплательщик или имеет способность Налогоплательщик, если у тебя много типов таких юнитов, действие Tax(Номер игрока(Игрок триггера/Переключающий игрок))=Tax(Номер игрока(Игрок триггера/Переключающий игрок)) + 1. Во втором триггере событие Юнит Умирает, условие Налогоплательщик, действие Tax(Номер игрока(Игрок триггера/Переключающий игрок))=Tax(Номер игрока(Игрок триггера/Переключающий игрок)) - 1. Но это если у тебя нет возможности захватить под свой контроль Налогоплательщиков, либо лишить их статуса налогоплательщиков через морф в другого юнита, всё это надо учесть, добавив событий. Такой системе не нужны группы игроков или отряды юнитов, только массив целочисленных переменных.
0
20
5 лет назад
0
8gabriel8, спасибо, теперь понятно. Я остановлюсь на первом варианте, так как он подсчитывается лишь раз в 90 секунд. А второй будет нагружать процесс постоянно, пусть и меньше.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.