魔兽世界9.1开关地图卡顿掉帧怎么办,魔兽地图特别卡是很多玩家想要知道的,本文就为大家带来游戏新内容!全新玩法、丰富剧情,让你沉浸其中,成为游戏世界的探索者!

  魔兽世界9.1开关地图卡顿掉帧怎么办

  造成卡顿的原因:

  C_TaskQuest.GetQuestsForPlayerByMapID

  这个api,在9.1,短时间内多次(实际上3~4次)调用就会出现卡顿

  简单的测试:

  做一个这样的宏:

  /run print(C_TaskQuest.GetQuestsForPlayerByMapID(1961))

  /run print(C_TaskQuest.GetQuestsForPlayerByMapID(1961))

  /run print(C_TaskQuest.GetQuestsForPlayerByMapID(1961))

  /run print(C_TaskQuest.GetQuestsForPlayerByMapID(1961))

  你去连按试试,就能重现连按M开关地图的卡顿感

  这个api是用于返回任务信息的,在开关地图(实际上是地图内容刷新)的时候,瞬间会多次调用的情况。

  所以写段代码,给这个api加个缓冲时间,短时间内只让调用1次

  代码:放入任意lua文件内

  local temp = {}

  local pre = C_TaskQuest.GetQuestsForPlayerByMapID

魔兽世界9.1开关地图卡顿掉帧怎么办,魔兽地图特别卡

  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

魔兽世界9.1开关地图卡顿掉帧怎么办,魔兽地图特别卡

  宏:每次进游戏自行点击一次

  简化版的宏:

  /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

  宏和代码稍微有点区别,效果大概是一样的。

  这应该是暴雪对这个api本身做了某些改动导致的,因为9.1之前的版本,这个api也是同时多次调用的情况,但是并不会导致卡顿

  PS:因为使用的方法是替换api进行hook操作,在某些时候会出现taint现象

  目前已知的,战斗中点击任务列表,会无法打开地图/任务界面(自行按M/L可以打开)

想要了解更多最新游戏资讯,欢迎在本站继续搜索浏览,我们将为玩家提供最新最全的游戏攻略,帮助你突破各种困难!