unity与android交互的问题

第一个是androidjavaobject崩溃:在之前的whee项目中,在开发捏脸及换装系统时,会用到unity与android及ios的强交互。然后再与android交互换装时,一开始我们是android拖动不松手也会不断的发消息给unity告诉unity捏脸的百分比,然后unity收到后会回调信息给Android告诉他捏脸是否成功。

在这种交互下,app会崩,并且崩在libunity层。刚开始我们通过不回调信息给android,然后我们减少交互次数,松手才交互,这时发现崩溃时间会变长,之前两分钟,现在要十分钟了。但是还是会崩溃。

首先想到的问题是,一帧处理太多顶点以及sharedMesh.verticessharedMesh.uv顺序可能会出问题,一定要保证sharedMesh.vertices是在sharedMesh.uv 前的,这样就不会了,而且每个顶点和uv都要隔几帧处理,这样来保证效率 

同时要注意间隔的帧,因为一个是顶点设置,一个是uv设置,所有两个是有先后的,而且也因为两个都是执行5个左右,所以间隔帧数,一个应该为7,第二个为8,这样就能保证顺序而且不会导致顶点执行两次,uv才执行一次。

并且在回调函数ToClientCallBack中最好能用列表记录下来,用update每帧只输出一次,这样保证下效率。

第二个处理时与android端联调,通过在交互之前和之后打log,发现android发送的信息,在unity层收到的空的。在这种情况下会崩溃。是崩溃在了libunity层。猜测androidjavaobject层会产生gc,然后消息到android端或到unity端时数据就空了。最终我们还时把回调加上,但是没用androidjavaobject,而时用sendmessage的方式。解决了!

第二个问题是unity没放在android端的主线程:

问题描述: 
Android
拉起Unity后,Android调用CreateAvatar生成形象,Unity 在生成形象接口中调用baseModel.SetActivity(true)崩溃。

问题排查: 
baseModel.SetActivity(true)注释掉,编译通过。有可能Android在切换Activity的时候,Unity马上SetAcivity的时候,找不到当前的Activity,导致崩溃。

解决办法: 
Android切换Activity的时候,要确定Unity是否切换完成,在进行接口的调用。并且要把unity放在主线程

 

其实总结起来,unity与原声的交互不能太多,ios交互还好,android端的交互会非常多坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值