當前位置:973游戲網(wǎng) > 手游頻道 >  手游攻略 > 魔獸世界9.1開關地圖卡頓掉幀怎么辦 開關地圖卡頓掉幀解決方法介紹
魔獸世界9.1開關地圖卡頓掉幀怎么辦 開關地圖卡頓掉幀解決方法介紹

更新時間:2021-07-05 09:57

作者:匿名

  魔獸世界9.1開關地圖卡頓掉幀怎么辦,正式服也是在7月1日上線了9.1版本,那么玩家們在游戲中按M開關地圖時卡頓掉幀又應該怎么辦呢,可能還有些小伙伴不清楚原因。所以下面就為大家?guī)砹碎_關地圖卡頓掉幀的解決方法介紹!

  魔獸世界9.1開關地圖卡頓掉幀怎么辦

魔獸世界9.1開關地圖卡頓掉幀怎么辦 開關地圖卡頓掉幀解決方法介紹

  造成卡頓的原因:

  C_TaskQuest.GetQuestsForPlayerByMapID

  這個api,在9.1,短時間內多次(實際上3~4次)調用就會出現(xiàn)卡頓

  簡單的測試:

  做一個這樣的宏:

  /run print(C_TaskQuest.GetQuestsForPlayerByMapID(1961))

  /run print(C_TaskQuest.GetQuestsForPlayerByMapID(1961))

  /run print(C_TaskQuest.GetQuestsForPlayerByMapID(1961))

  /run print(C_TaskQuest.GetQuestsForPlayerByMapID(1961))

  你去連按試試,就能重現(xiàn)連按M開關地圖的卡頓感

  這個api是用于返回任務信息的,在開關地圖(實際上是地圖內容刷新)的時候,瞬間會多次調用的情況。


  所以寫段代碼,給這個api加個緩沖時間,短時間內只讓調用1次

  代碼:放入任意lua文件內

  local temp = {}

  local pre = C_TaskQuest.GetQuestsForPlayerByMapID

  C_TaskQuest.GetQuestsForPlayerByMapID = function(mapID)

  ??if not temp[mapID] or temp[mapID].lasttime < GetTime() then

  ????temp[mapID] = temp[mapID] or {}

  ????temp[mapID].result = pre(mapID)

  ????temp[mapID].lasttime = GetTime()+1

  ??end

  ??return temp[mapID].result

  end

  宏:每次進游戲自行點擊一次

  簡化版的宏:

  /run local m,t,r;local pre = C_TaskQuest.GetQuestsForPlayerByMapID;C_TaskQuest.GetQuestsForPlayerByMapID = function(mapID)if m~=mapID or t~=time() then m=mapID t=time()r = pre(m)end return r end

  宏和代碼稍微有點區(qū)別,效果大概是一樣的。

  這應該是暴雪對這個api本身做了某些改動導致的,因為9.1之前的版本,這個api也是同時多次調用的情況,但是并不會導致卡頓


  PS:因為使用的方法是替換api進行hook操作,在某些時候會出現(xiàn)taint現(xiàn)象

  目前已知的,戰(zhàn)斗中點擊任務列表,會無法打開地圖/任務界面(自行按M/L可以打開)

  這只是小問題,實際上非常多的插件都會導致類似的問題(理論上可以通過其他方案修復,但是太麻煩了)。

相關資訊

CopyRight?2007-2021 ropkwcs.com All Right Reserved 晉ICP備2023022329號-1

溫馨提示:抵制不良游戲 拒絕盜版游戲 注意自我保護 謹防受騙上當 適度游戲益腦 沉迷游戲傷身 合理安排時間 享受健康生活
游戲作品版權歸原作者享有,如無意之中侵犯了您的版權,請您來信告知( 聯(lián)系郵箱:lqqsgduw132@163.com),本網(wǎng)站將應您的要求刪除。