DaeDR
offline
Опыт:
8,074Активность: |
Утечки спецэффекта
Допустим, создаю 4 эффекта вот так:
((код jass
call DestroyEffect ( AddSpecialEffect( "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl", GetUnitX(gg_unit_Hmkg_0014), GetUnitY(gg_unit_Hmkg_0014) ) )
)) И все вроде нормально, но по прошествии нескольких секунд id объектов увеличивается на 4 единицы. Как так? Посмотрите пожалуйста пример. Может у меня глюки пошли? Просто как я ни стараюсь: через точку, через переменную effect, ничего не получается. DaeDR добавил: Не знаю, как, но если удалить эффект после того как он исчез (его визуальная часть), то "утечки нет"! Может кто-нибудь объяснить это? получается, что все спецэффекты надо удалять через таймер? Отредактировано DaeDR, 22.02.2012 в 20:20. |
22.02.2012, 21:09 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ty3uK
offline
Опыт:
2,469Активность: |
Нет, эта конструкция не утечна. Скорее всего барахлит счетчик. Возможно, вы используете маленький промежуток |
22.02.2012, 21:24 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
Ty3uK, использую вот такую конструкцию (уже давно где-то на xgm'e взял)
» Код
1 секунда, думаю этого достаточно большой промежуток. |
22.02.2012, 21:32 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ty3uK
offline
Опыт:
2,469Активность: |
Все зависит от анимации спецэффекта. Дело в том, что эта конструкция удаляет его тогда, когда анимация Birth полностью проиграется. А у некоторых эффектов она может быть и 3. секунды, и больше |
22.02.2012, 21:35 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
Ty3uK, т.е. лучше подождать, и через таймер? Спасибо, теперь буду знать. сколько же косяков тогда... |
22.02.2012, 21:37 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ty3uK
offline
Опыт:
2,469Активность: |
Нет, такая конструкция не дает утечек. Таймер юзать смысла нет, она точно так же удалит эффект тогда, когда он полностью проиграется |
22.02.2012, 21:39 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
|
22.02.2012, 21:43 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Ty3uK
offline
Опыт:
2,469Активность: |
А на запуск таймера надо потратить ресурсы- сам таймер, хэндл эффекта, запуск, удаление эффекта, уничтожение таймера, очистка хт... Это же все надо сделать. Зачем, когда можно использовать эту конструкцию? |
22.02.2012, 21:44 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JaBeN_Симфер
offline
Опыт:
20,050Активность: |
раскомментируй строки IF - Endif, они для того, чтобы таймер не показывал текущее число объектов, а показывал только увеличение. Если количество объектов безостановочно растет, то есть утечки. Промежуток можно уменьшить до 0.1, это даст более точный результат. Опять же, нужно смотреть динамику увеличения, а не постоянно анализировать текущее количество, т.к. оно скачет! |
23.02.2012, 03:24 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
DaeDR, строки не удаляются, читай подробнее: xgm.ru/p/wc3/w3_data_types |
23.02.2012, 03:29 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
ScorpioT1000, огромное Спасибо. |
23.02.2012, 07:18 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|