美文网首页
关于Hybrid+Xlua的一些问题记录

关于Hybrid+Xlua的一些问题记录

作者: 飞翔的蜗牛235 | 来源:发表于2023-12-10 17:09 被阅读0次

    1:背景原因

    现在很多的老项目都用的是Xlua,但是Xlua热更C#部分不是很好用,所以需要接入Hybrid来热更新c#,部分代码还是Lua+C#,这时就需要Xlua和Hybrid一起使用

    2:遇到的问题

    1.由于Hybrid热更代码不支持外部方法,就是一些DllImport的代码都会被裁剪掉,正常一些插件代码,我们只需要把插件的代码放到非热更程序集就好了,就等于插件的代码不热更,大部分都是这样处理就可以了
    2.Xlua内部也有很多的Dllimport方法,假如我们直接把Xlua放到非热更程序集,但是由于老项目很多代码都需要生成Wrap.cs,要是直接这样做,等于C#的代码都不能热更了,所以这样是行不通的,因为大部分Warp的代码都是我们自己写的代码,编译Xlua时都会生成一个Wrap .cs 这样Lua才能调用到C#代码,这个文件如果要热更,编译的时候,Wrap 文件和xLua解释器一起编译,所以如果wrap要热更,那么xLua也要热更,所以就必须把xLua 做成热更dll,因为xLua.dll core 代码 + wrap 代码内容

    3:解决办法

    1.就是因为warp代码要热更 然后xlua内部有dllimport的代码 放到热更程序集会被裁剪 所以需要把DllImport的代码包装一层
    这里我把Xlua的LuaDll.cs放到热更代码部分,然后dllImport部分的代码LuaExtern.cs放到非热更部分


    xlua_1.png xlua_2.png

    这样就可以实现Hybird热更C#,Lua调用C#的部分也正常使用

    4:参考文献

    1.Hybrid热更直接去官方网站 https://hybridclr.doc.code-philosophy.com/docs/intro
    2.unity+Xlua案列 https://gitee.com/ldr123/HybridCLRXlua,非常感谢作者的分享
    3.还参考了https://blog.csdn.net/weixin_38027841/article/details/131182787 博主的分享

    相关文章

      网友评论

          本文标题:关于Hybrid+Xlua的一些问题记录

          本文链接:https://www.haomeiwen.com/subject/xhrpgdtx.html