《求大神指点》如何解决加载大量lua 头文件时,造成卡UI线程问题?

实际游戏开发过程中碰到一个问题,第一次打开界面时会出现明显的卡顿,后来发现是加载lua文件导致的,目前项目做法是,在loading界面加载一堆lua类文件,但是还是会在loading界面造成长时间停顿,目前想的是在c++再开一个线程,然后这个线程专门用来加载lua文件。不知道大家有没有遇上这样的问题,如果有,是怎么处理的!跪求大神指点!

还有开线程加在文件会不会造成其他的问题呢

把require放到多个帧中调用就可以了,下面是个简单的例子,可以修改为加载了n毫秒之后再等待下一帧。如果lua文件之间的依赖关系比较复杂导致require一个文件同时需要require非常多文件的话,就需要自己解耦了。

local files = {
    "a",
    "b",
    "c",
}
local index = 1
self:scheduleUpdateWithPriorityLua(function()
    local file = files[index]
    require(file)

    if index < #files then
        index = index + 1
    else
        self:unscheduleUpdate()
    end
end, 0)

首先谢谢你的回答。我坐过类似的处理,运用lua 自带的协成去做加载,效果也是一样的,也会有卡顿的现象!只是可能会减轻一点!

加载lua 文件 是现用现加载? 还是一次把所有lua文件加载?

现用加载的会导致打开界面时卡顿,所以大部分类都在进度条时加载!随着类越来越多,进度条就卡顿了

是PC上吗,貌似编译成luac后并且在手机上跑会好很多,我们游戏也是PC上启动的时候卡,但是放到手机上就不卡了。

我们也是放在多个帧里加载的