报错
[2023-01-22 09:40:00.322][Exception] ExecutionEngineException: Method body is null. XLua.LuaDLL.Lua::xlua_get_lib_version
(资料图片)
XLua.LuaEnv..ctor () (at <00000000000000000000000000000000>:0)
ProjectA.XLuaComponent.Init () (at <00000000000000000000000000000000>:0)
这个报错不知道为什么,最开始把LuaEnv初始化卸载XLuaComponent的时候,没有提示报错。
产生这个报错的原因就是这个函数是反射dll中的函数。在AOT剪裁时,给搞掉了。也有可能是反射的地方不对。本想看看这个DllInport是怎么反射的,最后还是无奈放弃,rider编译不出dll,看不见iL。看了别人的xlua接入,采用的方案就是把luaDll部分转移到AOT中。最后我也采用了这个方案,最后成功运行。
讲一讲思路,
assembly分包,一种是unity-csharp作为AOT,另一种就是作为hotfix。我采用的是后者,所以我需要做一个资源更新的启动件。
我单独做了一个Launch的scene,这个scene负责更新资源,资源更新完毕后,先加载dll,再切换到我的Game的Scene,相关脚本单独放一个文件夹,namespace也要和主工程区分,作为aot assembly。game scene负责实际的预加载和游戏启动。
切换场景的时候也有坑,你需要通过Gameframework的scene启动scene,这意味着你要找到Gameframework使用SceneManager切换scene的地方,因为Gameframework使用的是addtive模式,我们要使用single模式,切换scene前,记得要把Gameframework重启一次,clear一下里面的缓存。不然在game scene中使用Gameframework就会报错。
要么就用一套Gameframework来做。但是我个人更喜欢这种方案,因为我可以做到整个场景都热更,不需要去关心launch的部分。
下一篇:最后一页
-
粤水电(002060.SZ):巴楚能源公司拟123.03亿元投建粤水电巴楚县200万千瓦光储一体化项目格隆汇12月7日丨粤水电公布,为拓展清洁能源发电业务,扩大清洁能源发电业务规模,提高利润水平,公司拟由全资子公司新疆粤水电的全资子公司巴
-
浙江震元:公司互联网医院尚在建设中,未来将根据业务情况配置医生|今日关注(原标题:浙江震元:公司互联网医院尚在建设中,未来将根据业务情况配置医生)同花顺(300033)金融研究中心12月6日讯,有投资者向浙江震元(
-
妇炎洁广告被指侮辱女性上热搜 官方致歉来了!5月17日,妇炎洁广告被指侮辱女性登上热搜。据了解,近日,妇炎洁电商官方旗舰店一款女性私处用品广告被指侮辱女性,广告写道:中日韩三国
-
花8000多元买的商品,白等两个月却没收到货?亚马逊回应“花8000多元买的商品,白等了两个月却没收到货。”近日,消费者赵先生向《中国消费者报》投诉,称他通过亚马逊购物APP下了两笔订单,在等待两个月后订单均被强制取消。
-
广东省消委会发布二手车买卖合同示范文本为配合广东省推进“阳光二手车”工作,促进二手车流通行业健康发展,推动经营主体树立诚信经营理念,规范二手车交易行为,切实保护消费者的合法权益。
X 关闭
X 关闭