我聽講區域變數先要自己刪架wo...
全域先唔會有事
變數清空篇 我們再來問:上面連triggeraction都刪的龜毛函數(code2)還有沒有記憶體問題。答案是:有。
我勒!@#$()*&@$%&^!@%#!%#@!&^#@,到底要怎麼改才對?要這樣:
function Ampify_Damage_child takes nothing returns nothing
call SetUnitLifeBJ( GetTriggerUnit(), RMaxBJ(( GetUnitStateSwap(UNIT_STATE_LIFE, GetTriggerUnit()) - GetEventDamage() ), 0.50) )
endfunction
function Trig_Ampify_Damage_Actions takes nothing returns nothing
local trigger T = CreateTrigger()
local triggeraction A = TriggerAddAction(T, function Ampify_Damage_child)
call TriggerRegisterUnitEvent( T, GetSpellTargetUnit(), EVENT_UNIT_DAMAGED )
call PolledWait(45.0)
call TriggerRemoveAction(T,A)
call DestroyTrigger(T)
set T = null
set A = null
endfunction
這個步驟稱為變數清空(nullify)。之所以連這個都要做,是由於B社的程式師偷懶,留下區域變數的bug。
詳細原因後面會說明。只有區域變數會造成這個問題,全域變數不會。
[ 本帖最後由 x00900 於 2014-5-15 16:33 編輯 ]