找回密码
 立即注册
查看: 670|回复: 7

现有的几个Unity热更新方案该如何选择,各自的优缺点是什么?

[复制链接]
发表于 2021-4-11 05:20 | 显示全部楼层 |阅读模式
uLua、C#Light、Dll
发表于 2021-4-11 05:24 | 显示全部楼层
目前可以选择的有lua,还有l#,以及我后来重新设计的ILRuntime

lua的话比较适合由c++ + lua转过来的团队,如果本来团队就习惯lua开发的话,可以尝试使用uLua等lua的unity插件来进行逻辑开发,然后后期再更新

对于一开始就使用c#的团队来说,如果想像在unity里一样得进行开发的话,可以尝试使用一下我设计的一个库,现在已经开源。原理上跟L#差不多,不过性能上要优于L#不少,并且完全支持泛型和继承脚本外的类这些l#做不到的用法,感兴趣的话可以看我的github repo:https://github.com/liiir1985/ILRuntime

如果喜欢的话希望能给个星
发表于 2021-4-11 05:26 | 显示全部楼层
目前正好在做这方面的调研,简单说一下目前掌握的情况,抛砖引玉

- uLua 跟另外两个方案比运行效率没有优势
- C#Light 不支持泛型,委托事件需要用特殊的方式封装,详见 CSLight研究院之学习笔记脚本NGUI里的回调方法(二)
- Dll iOS上貌似没办法动态载入,有了解的请指教

之后实际项目有积累以后再回来更新
发表于 2021-4-11 05:35 | 显示全部楼层
推荐slua
发表于 2021-4-11 05:42 | 显示全部楼层
我决定下个项目不支持热更新了,组件的开发方式,好好设计的话,能排列组合出不少功能。

当前项目用的nlua(https://github.com/dpull/UnityLua),开发速度慢于c#,也不好调试
发表于 2021-4-11 05:50 | 显示全部楼层
我们之前的项目用的是slua,顺利上线了,没有遇到什么大的问题。
C#Light我们也研究过,在效率上相比lua并没有很大的优势,用起来感觉还是有不少坑要趟;DLL热更新iOS上没法用,不考虑。
加上我们之前做过cocos2dx+lua,对lua更了解,所以最后决定用slua
说一下优缺点吧:
1、debug的确麻烦一些,但是有个好处就是不用等编译,你也知道代码多了之后Unity的那个编译速度有多慢,改完lua代码直接启动就可以跑,再开发一下甚至可以在运行时直接reload代码,开发效率还可以
2、对程序员的技能要求低。只要lua跟C#、Unity交互的部分做好了,大家都只用在lua层面开发,与C#相比lua用起来还是简单很多的
3、调试方便,真机运行时遇到lua的crash,可以直接拿到traceback显示出来,方便及时发现问题。不过在线上的话还是要做好crash report。
4、动更方便,后来我们游戏里的配置都直接转成lua的table,require之后就直接用了,也没有反序列化的效率问题,每次动更配置+代码也就几k,工具做好了之后修复bug什么的很方便
5、性能问题,其实在我们项目中并没有感觉到lua对性能用什么影响= =
不过这个问题现在应该已经有标准答案了,毕竟鹅厂的xlua都开源了,那么多项目都用,已经不用选了啊
发表于 2021-4-11 05:53 | 显示全部楼层
不说ios的情况,我觉得android的热更新涉及到bundle的制作都挺麻烦。
发表于 2021-4-11 06:03 | 显示全部楼层
dll在android上还可以搞搞,ios应该是不可能实现。
C#Light是不是没有什么成功的大案例,感觉太小众,而且是不是语法上还有不少限制?
我反而觉得ulua可能是更为靠谱的方法。
//不过,话说回来,cocos-3d的js脚本方案有没有考虑过?好像是可以热更新,不过3d制作工艺比unity3d确实是差好多。。。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 19:13 , Processed in 0.123408 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表