Добавлен Берги
Уважаемые форумчане, у меня такой вопрос является ли событие TriggerRegisterEnterRectSimple утечным ? на сколько? на что его заменить? у меня ничего не работает...
А теперь по подробнее:
Я вдруг в 2018 году понял что у меня что-то не так с этим событием и вот его начинка:
А теперь по подробнее:
Я вдруг в 2018 году понял что у меня что-то не так с этим событием и вот его начинка:
function TriggerRegisterEnterRectSimple takes trigger trig, rect r returns event
local region rectRegion = CreateRegion()
call RegionAddRect(rectRegion, r)
return TriggerRegisterEnterRegion(trig, rectRegion, null)
endfunction
как видим у нас в нём утекает регион, ну с ним ничего не происходит, он не обнуляется не уничтожается и не перезаписывается, если что, то напомню, это событие входа юнита в некую область, ну у меня вообще областей нет кроме как "вся карта" поэтому я использую это событие вот так:
TriggerRegisterEnterRectSimple( triggername, bj_mapInitialPlayableArea), верно ли я понимаю, что событие работает для любого появившегося/рождённого каким либо способом юнита? даже если в условие самого триггера стоит проверка на тип или на ещё что нибудь? Потому что у меня входит 2к объектов при генерации нового уровня + 1к снарядов юнитов за уровнень, + прочие дамми и всё это для 7 такие триггеров если посчитать то получается 7к утечных локальных регионов, а на протяжении 20 таких прогрузок это 140 000 утечек, я не знаю у меня карта прекрасно работает, в целом меня это и не парит даже, но я понимаю что это не хорошо, хотя может я и не правильно посчитал, так поясните пожалуйста.
TriggerRegisterEnterRectSimple( triggername, bj_mapInitialPlayableArea), верно ли я понимаю, что событие работает для любого появившегося/рождённого каким либо способом юнита? даже если в условие самого триггера стоит проверка на тип или на ещё что нибудь? Потому что у меня входит 2к объектов при генерации нового уровня + 1к снарядов юнитов за уровнень, + прочие дамми и всё это для 7 такие триггеров если посчитать то получается 7к утечных локальных регионов, а на протяжении 20 таких прогрузок это 140 000 утечек, я не знаю у меня карта прекрасно работает, в целом меня это и не парит даже, но я понимаю что это не хорошо, хотя может я и не правильно посчитал, так поясните пожалуйста.
Значит что я сделал, я создал 2 региона в глобалках мимо кода и на переменных с названиями udg_RegionAllMap и RegionAllMap соответственно, потому в спустя 1 секунду после старта карты я делаю вот это :
RegionAllMap=CreateRegion()
RegionAddRect(RegionAllMap, bj_mapInitialPlayableArea)
RegionAddRect(udg_RegionAllMap, bj_mapInitialPlayableArea)
ну а в триггере прописываю
TriggerRegisterEnterRegion(gg_trg_name, RegionAllMap, null)
B всё замечательно, ничего не утекает, потому что НИЧЕГО И НЕ ПРОИСХОДИТ!
Поясните, что я не так делаю... спасибо....
Поясните, что я не так делаю... спасибо....
Принятый ответ
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Bergi_Bear, честно скажу, что в детали лезть не очень желание есть, вот тут решается аналогичная проблема (регистрация всех входящих на карту юнитов) без утечек и максимально изящным образом, можешь воспользоваться как референсом.