python能用unity吗_如何在unity中使用python做热更脚本?

我想crash的原因是因为editor下用的是微软的 .net core而放到手机上的话跑的是mono的虚拟机。

unity做热更有很多选择,其中最大的一支是lua,选择有很多,xlua, slua, tolua等等,使用的人都很多。

还有一些脑洞比较清奇的是用c#来开发,然后热更的话是跑lua的,xlua里面有这种热更的选项。

同时还有用c#开发打包的时候把C#的il码转成lua代码来执行。

另外一种是利用roslyn把解析好的c#语法树翻译成lua代码来执行的。

好了,重点来了,无论上述lua的热更新方案你选择哪一个,都绕不过prefab上绑定lua脚本,运行时获取prefab上绑定值的问题(暂且称这种问题为binding问题)。

解决这个问题的方法根据上述的几个lua方案的方案也有很多种,大部分都是写个lua的monobehaviour代理类。究其根本就是unity没有开放反序列化的接口,这些寄生的脚本语言都是二等公民。

除了要解决binding问题还有一个问题是资源解耦的问题,做热更的肯定是希望游戏大部分的内容(90%以上)都可以被热更,不能被热更的部分一般会作为resources被打包到“首包”(基本上是游戏的初始场景)里面。如果首包内容太多而运行时有没办法妥善卸载其引用的资源,那么内存里很容易存在两份相同的资源。一份是首包带进去的,一份是通过assetbundle加载出来的。

如果选择了lua的方案还要考虑一个问题,那就是lua在一些高性能的计算上会比较吃紧。所以对性能要求比较高的计算要放在c#这里来进行。同时还要尽量减少c#和lua的相互调用,因为这也是性能消耗带的大头。尤其是c#调用lua更是要小心。比lua调c#要好的多。

目前比较重要的就想到了这么多,之后有的话再补充吧。

PS,感觉自己强行安利了lua一波,没办法,用了lua有一阵子了。楼主不用局限于lua啊,应该还有其他的解决方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值