如何改善記憶體漏失?

看板WarCraft (魔獸爭霸 - 魔獸爭霸3)作者 (咕嚕咕嚕魔法陣)時間18年前 (2008/03/07 14:43), 編輯推噓8(807)
留言15則, 6人參與, 最新討論串1/1
之前看許多人的寫法,一般都是在點或群組使用之後再刪點。 我改成在每次使用點或群組之前刪點或群組,這樣寫對改善記憶體漏失有幫助嗎? 自訂腳本:call RemoveLocation(udg_Temp_Point) 設定 Temp_Point = (Temp_Unit 之位置) 自訂腳本:call DestroyGroup(udg_Temp_group) 設定 Temp_group = (半徑 600.00 於Temp_Point 內之部隊,比對條件:(比對部隊為存 活) 等於 真) ============================================== 另外之前我看到新增event也會增加記憶體負擔,只能將整個觸發砍了才會刪掉事件。 那麼我這樣寫可以改善嗎? --------//使用觸發陣列變數來增加只執行一次的事件。 設定 TempTigger[T_ID] = TempTiggerS 觸發 - 於(TempTigger[T_ID])增加事件:(部隊 - (最後創造的部隊) 死亡) 設定 T_ID = T_ID + 1 -------//並在該觸發的開頭加上call DestroyTrigger(GetTriggeringTrigger()) 觸發 TempTiggerS 事件 條件 動作   自訂腳本:call DestroyTrigger(GetTriggeringTrigger()) --------------------- 這樣寫的話有用嗎? 另外,這樣的話,在該觸發被執行後,因為 call DestroyTrigger(GetTriggeringTrigger())而被刪掉的 觸發變數TempTigger[T_ID]那個值是變為空(null)嗎?有沒有辦法判斷? 另外一個問題,有沒有辦法取得觸發變數陣列在執行時的索引值? 舉例來說,我希望觸發TempTigger[5]在執行的時候能抓到它的索引值也就是5, 然後指定給TempTiggerEmpty[5] = true 這樣就可以用迴圈來跑看那一個索引位置已經被執行過也被移除空了出來以便重新指定 新的觸發與事件。 另外,解答這個問題在解決不同的玩家在執行事件-遊戲時間經過或事件-計時器歸零 時抓取玩家編號也有作用。 例如:玩家3的英雄死亡後,開啟記時器3的倒數,    並增加事件-記時器3時間歸零 到 觸發 玩家復活[3]    這樣就可以玩家復活那個觸發中根據抓到的陣列索引值來復活相應玩家的英雄了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.92.170

03/07 14:51, , 1F
我還以為我走到Programming版了XDD
03/07 14:51, 1F

03/07 15:13, , 2F
這樣就好像沒吃飯前先清掉下的飯粒...= =
03/07 15:13, 2F

03/07 16:30, , 3F
其實我比較想問的是後面那個觸法陣列的問題。
03/07 16:30, 3F

03/07 17:06, , 4F
計時器我記得設陣列似乎無效耶 用一般的觸發編輯的話
03/07 17:06, 4F

03/07 17:13, , 5F
應該有用吧 但是一定要設定正確的大小 因為需要初始化
03/07 17:13, 5F

03/07 17:15, , 6F
= =? 印象中無論設多少都是一樣大小 (數字忘了)
03/07 17:15, 6F

03/07 21:40, , 7F
請問到底該怎麼讓計時器成功的設陣列?
03/07 21:40, 7F

03/07 21:40, , 8F
能用的話寫很多觸發可以省不少力氣 教我~~
03/07 21:40, 8F

03/07 21:58, , 9F
我都用jass在寫東西的 -.- 幫不上忙
03/07 21:58, 9F
Ctrl+B,新建一個變數Timer,並設定為計時器、陣列打勾、大小設定為8(玩家數量) 之後要用的話,就用 開始計時器Timer[PlayerID],單次,N秒。 事件增加-觸發XXX,增加事件計時器Timer[PlayerID]歸零 ,這樣應該就可以了。 問題就在於那個觸發XXX在事件發生時,怎樣才能抓到PlayerID,也就是當時發生事件 計時器歸零的陣列索引。這個還是沒人解答呀 囧 ※ 編輯: vinxu 來自: 59.127.92.170 (03/07 22:13)

03/07 23:10, , 10F
抓不到。一定要timer就乖乖寫八條。
03/07 23:10, 10F

03/07 23:17, , 11F
取巧可以用回血-1的單位。
03/07 23:17, 11F

03/08 07:36, , 12F
感謝g大 vinxu的方法很正統我也是這樣寫的 但我發現
03/08 07:36, 12F

03/08 07:38, , 13F
Timer陣列似乎抓不到 如果有抓得到的地圖樣本請一定
03/08 07:38, 13F

03/08 07:39, , 14F
要給我看看
03/08 07:39, 14F

03/09 05:02, , 15F
找到解決辦法了,看#17qldDIc那篇吧。
03/09 05:02, 15F
文章代碼(AID): #17qEGVXc (WarCraft)
文章代碼(AID): #17qEGVXc (WarCraft)