Unity与Android深度交互:打造高效应用

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

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

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

unity 和 Android交互 unity安卓交互_Android

同时要注意间隔的帧,因为一个是顶点设置,一个是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端的交互会非常多坑。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空