找回密码
 立即注册
查看: 683|回复: 9

[笔记] unity开发的APP如果需要实现类似于热更新的功能,但同时需要考虑苹果对热更的限制,有什么好的方案?

[复制链接]
发表于 2021-4-28 09:42 | 显示全部楼层 |阅读模式
unity开发的APP如果需要实现类似于热更新的功能,但同时需要考虑苹果对热更的限制,有什么好的方案?
发表于 2021-4-28 09:48 | 显示全部楼层
首先啊,没有好方案,iOS平台(包括现在的Android平台)所有热更方案都是灰色地带,是摆在台面上的偷偷摸摸。风险是必然存在的,需要自己斟酌权衡。
然后,目前主要思路就是用Assetbundle.
资源用ab包做热更,这个问题不大,小团队可以直接网上找现成的ab包资产管理框架,比如Unity第一方的Addressables,比如第三方的TinaX(逃
有的回答说资源热更不受限制,这与实际也是有出入的。按照苹果的规则,原则上只能进行“适度”的资源热更,比如说应用一启动,你读条下载半天,原则上也是可能会被拒的。




代码逻辑咋办呢,把它当成txt资源或者bytes资源来通过ab包做热更,比如lua语言,把代码文件本身(文本或字节集形式)来热更,然后在把代码运行起来。
具体方案有:
腾讯的xLua,在unity应用上运行lua代码。特点是你的会lua语言
掌趣的ILRuntime,在unity应用上解释运行C#代码(DLL/IL代码,准确的说)。特点是C#,不需要会第二种语言,但是接入ILRuntime需要团队至少有一个人有较高的C#技术水平。
腾讯的Puerts,在unity应用上运行JavaScript/TypeScript代码(也支持ue4)。特点是你得会JavaScript或TypeScript,理论上说上手难度或者要学的东西会大于xLua方案,一方面ts本身比lua东西要多,另一方面实践中lua作为嵌入语言没啥自己的生态,而用ts更多会直接使用ts生态。puerts的诞生是为了解决lua的一些痛点,而这样痛点通常在比较大规模的项目才痛,如果你的项目用lua没啥觉得难受的地方,应该不需要考虑puerts.


上述方案都只是代码的运行环境,具体使用上,要和前面的说的资源热更新方案配合使用,如果一开始上手比较混乱的话,也可以试试网络上一些开源的,把它们调教好的第三方开箱即用框架,比如QFramework,比如TinaX(逃




还有,有个事,苹果的上架审核是比较“灵活”的,各种意义上。
发表于 2021-4-28 09:54 | 显示全部楼层
楼上说的很好了,ios代码热更也可以考虑ilruntime的方案
发表于 2021-4-28 10:02 | 显示全部楼层
热更分两部分:
1、热更资源,ios和android平台都可以更新,这个是不受限制的
2、代码热更,ios对于代码热更的限制是不可以新增模块,但是可以修复bug,我们用的的是Ifix,一个c#的补丁修复方案。优势在于可以直接用c#更新而不是用lua
发表于 2021-4-28 10:04 | 显示全部楼层
推荐一下Tolua+Injectfix工作流
其实Xlua的代码非常值得拜读,干净清爽,其设计也是真正从0到1了一部分。
Tolua代码就没节操很多了,但是这玩意又稳定又快,但是我最初基建搭在这上边了,因此使用了tolua。
使用lua的好处很多,数据层,战斗模拟器,甚至各种算法,全都可以拆出来做,无需启动unity,jetbrain idea+emmylua+lua.exe(自己编一下lua源码就好,或者直接用luaforwindows)即可快速实现功能的"内核"。写出的东西都是强制解偶的"lua库",比较容易管理。
ILR我感觉性能有些糟糕。
还有方案是根据后端选型来决定前端:
后端用.net core,那么前端可以考虑上ILR。
后端用skynet或者c++&lua,那么前端可以考虑上lua
后端用pomelo或者硬上nodejs,那么前端可以考虑上js。
后端Python,那么前端可以劝说他不要用Python。
后端用go,那么前端随意
后端用rust,那么前端可以离职
补充一下为啥会有这种思路:
1.考虑前后端同学互相backup一下,至少代码语言级别不成阻碍,你有事来不了,突发问题或者阻塞研发的问题我至少能帮你看看定位一下
2.对员工成长广度有意义,例如用的xlua和skynet的项目组,只要有兴趣就有相对较低的成本发展成全栈
3.有助于定制规范,做一些前后端代码复用。例如战斗库等。
发表于 2021-4-28 10:09 | 显示全部楼层
xLua,ToLua都可以,挺成熟的。
或者试试InjectFix,可以热更c#,不过似乎还没项目使用
发表于 2021-4-28 10:15 | 显示全部楼层
Xlua tolua
发表于 2021-4-28 10:22 | 显示全部楼层
tolua+injectfix
发表于 2021-4-28 10:31 | 显示全部楼层
各种Lua方案已经很成熟了
发表于 2021-4-28 10:36 | 显示全部楼层
看游戏开发进度和团队的能力
各个方案上面的大佬讲的很清楚了。
个人认为ilruntime还是比较方便的,毕竟lua太X日的了。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-30 22:38 , Processed in 0.096206 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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