Android:使用studio将unity打包的andriod
1.unity版本: 5.4
2.android开发工具:android-studio
unity打包的项目集成了谷歌的vr sdk;导出的andriod项目里面包含四个文件夹,
如上图所示,三面三个都是lib;
ok接下来我们来看下集成的步骤,很简单,比集成sdk还要简单
1.将我们已有的android项目打开,然后将三个依赖库导入;(可以不导入gvr_permission..);此处需要注意,将依赖库中的jar包名称修改下;切记,一定要修改.
2.在已有的项目里面写一个activity继承GoogleUnityActivity即可;在onCreat()方法里面复制如下代码即可.;此外需要将csc里面的jar包也添加到libs文件夹.(ps:如果此处unity项目没有集成google vr的话,可以继承UnityActivity)
在此activity的布局文件中写一个线性布局,然后在onCreate()方法里面添加如下代码;
LinearLayout addViewId= (LinearLayout) findViewById(R.id.addViewId);
getWindow().setFormat(PixelFormat.RGBX_8888);
mUnityPlayer=newUnityPlayer(this);
// View view=mUnityPlayer.getView();
addViewId.addView(mUnityPlayer);//csc v scene_type
3.将csc里面libs文件夹里面的.so文件全部拷贝到已有工程项目的libs里面
4.将unity打包出来的asset文件夹下的全部内容拷贝到现有android项目的asset文件夹下
5.大功搞成,从其他activity中跳转到此actviity即可;
另外若需要传递值给unity,可以调用
mUnityPlayer.UnitySendMessage("ReceiveMessage","InitUnity", json);前两个参数和unity那边沟通好,最后传递的string类型参数,是一个json数据哦;
//2017年11月7日更新
传递数据的话,可以是直接UnityPlayer.UnitySendMessage("ReceiveMessage","InitUnityVoice",msg.custom);而不必是使用成员变量,也是前几天才知道这个UnitySendMessage方法是一个静态方法。
2017年11月3日,Unity中介入了腾讯语音sdk,将包打给我,集成到现有android项目中.
1先说说遇到的坑吧,Unity那边给我的android项目是eclipse版本的,大家都知道开发android现在基本上都换成了studio;所以我们无法直接使用android-studio打开这个带有很多库的eclipse项目.
2.第二个就是,在使用的时候,我本来是想按照上面写的步骤将语音的库导入我的现有的android项目,但是发现不行,缺少东西.
解决方法
1.我使用File-import project项目的方式,打开eclipse项目,此时可能会出现问题,不过我本来也不指望能正常运行,我只是想得到其他四个能在studio环境下使用的库,若不如此操作,其他四个库会缺少gradle文件
2.由于之前我项目已经使用了其中三个库,今天就说一下如何使用语音的库.我按照之前的方法,导库进入,然后使用发现,语音库里面的jar包找不到,但是编辑的时候我确实是导包并且调用了其中的方法,运行项目的时候提示我找不到类;一阵懵逼,最后我试着不把语音库导入,而是直接将其lib中的.so文件拷贝到我项目的.so文件,将其中的jar包拷贝到lib下,和我项目之前的jar包在一起使用,然后运行,发现是可以正常运行了,但是我确实不知道为什么不能像以前一样导入使用.
另外,需要注意的是,我们需要在Activity中的onCreate方法中调用如下代码
GCloudVoiceEngine.getInstance().init(getApplicationContext(),this);
开始我以为我什么都不用操作,只要导库加入jar包就行了,但是没想到,还要初始化一下语音;这里还是我刚开始集成之后Unity同事告诉我集成之后语音不行,但是我检查了下集成是没问题的,后来Unity同事给我语音Unity集成文档我才发现了,需要我初始化,我一直以为Unity那边集成的时候自己去初始化呢,懵逼,为什么不早点告诉我呢,.....