实际游戏开发过程中碰到一个问题,第一次打开界面时会出现明显的卡顿,后来发现是加载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上启动的时候卡,但是放到手机上就不卡了。
我们也是放在多个帧里加载的