![]()
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. |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Ty3uK
![]() ![]() offline
Опыт:
2,469Активность: |
Нет, эта конструкция не утечна. Скорее всего барахлит счетчик. Возможно, вы используете маленький промежуток |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DaeDR
![]() ![]() offline
Опыт:
8,074Активность: |
Ty3uK, использую вот такую конструкцию (уже давно где-то на xgm'e взял)
» Код
1 секунда, думаю этого достаточно большой промежуток. |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Ty3uK
![]() ![]() offline
Опыт:
2,469Активность: |
Все зависит от анимации спецэффекта. Дело в том, что эта конструкция удаляет его тогда, когда анимация Birth полностью проиграется. А у некоторых эффектов она может быть и 3. секунды, и больше |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DaeDR
![]() ![]() offline
Опыт:
8,074Активность: |
Ty3uK, т.е. лучше подождать, и через таймер? Спасибо, теперь буду знать. сколько же косяков тогда... |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Ty3uK
![]() ![]() offline
Опыт:
2,469Активность: |
Нет, такая конструкция не дает утечек. Таймер юзать смысла нет, она точно так же удалит эффект тогда, когда он полностью проиграется |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DaeDR
![]() ![]() offline
Опыт:
8,074Активность: |
|
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Ty3uK
![]() ![]() offline
Опыт:
2,469Активность: |
А на запуск таймера надо потратить ресурсы- сам таймер, хэндл эффекта, запуск, удаление эффекта, уничтожение таймера, очистка хт... Это же все надо сделать. Зачем, когда можно использовать эту конструкцию? |
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
JaBeN_Симфер
![]() ![]() offline
Опыт:
20,050Активность: |
раскомментируй строки IF - Endif, они для того, чтобы таймер не показывал текущее число объектов, а показывал только увеличение. Если количество объектов безостановочно растет, то есть утечки. Промежуток можно уменьшить до 0.1, это даст более точный результат. Опять же, нужно смотреть динамику увеличения, а не постоянно анализировать текущее количество, т.к. оно скачет! |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
DaeDR, строки не удаляются, читай подробнее: xgm.ru/p/wc3/w3_data_types |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DaeDR
![]() ![]() offline
Опыт:
8,074Активность: |
ScorpioT1000, огромное Спасибо. |
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|