Unity Lua方向的面试真题详解

最近有位同学面试Unity,面试的公司采用Lua的方案来做公司项目,我们把面试时问道的真题列举出来,并配上参考回复。

1、Lua热更文件时,文件是重写的,还是只写一部分?

热更分为资源更新和代码更新,资源更新的颗粒度是基于ab包的,是基于一个个资源包来进行下载和替换。做代码热更新的时候,如果热更代码被打入了ab包,那么下载的时候,也是整个代码所在的ab包一起下载。如果热更代码是单独部署的,我们就可以基于对应的文件颗粒度来下载替换。一般做lua热更新的时候,代码打成ab包后,可能只有几百k,并不很大,那么我们打一个ab包就可以了。如果lua代码打包成ab包后很大,我们可以考虑把lua代码分成几个ab包,这样下次热更的时候,就是基于lua代码所在的ab包来热更。对于其它热更技术也类似。热更代码是打一个ab包,还是打多个ab包,完全取决于代码ab包的大小;

2: lua是怎么热更的?

step1:lua做热更时,通过版本对比,md5文件差异比较,把更新的lua代码所在的ab包下载下来;

step2: 当最新代码下载下来以后,我们首先去下载目录下加载lua代码所在的ab包,如果没有,就到本地StreammingAssets目录下加载,如果没有,就报错。

step3: Lua 虚拟机添加 customloader, 当有require来加载lua代码的时候,我们就从来到 customloader的函数,这个函数从Lua代码所在的ab包里面,根据

lua文件路径,把文本资源读出出来,并装载到lua虚拟机里面执行。

由于每次都是优先从下载目录下加载lua, ab包,所以热更的时候,能加载执行到最新代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值