修改unity导出到安卓的activity
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改unity导出到安卓的activity相关的知识,希望对你有一定的参考价值。
参考技术A 1、首先将Unity创建一个android工程,例如我的工程名是:01_Unity_Message,如下是Project视图下的目录。2、新建库模块——Android工程是由模块组成的,每一个模块可以创建一个应用,切换到Android视图下可以看到每一个模块。因为Unity与Android通信主要是调用了各自的方法,因此在Android工程中我们可以单独新建一个模块作为库模块,来负责与Unity的交互内容。
新建模块操作:
点击Finish按钮,然后稍等片刻,就会创建出新的模块,我们作为一个库模块来使用,如下图:
3、将Unity的jar包(class.jar)导入到新建的库模块中,首先说明:
首先找到class.jar文件,它的路径在Unity的安装路径下,例如我的是在:D:\Program Files (x86)\Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes,然后会发现只有一个class.jar文件。
这里注意两点:
(1)、这个路径是新版的Unity下的路径,以前版本的jar文件是在\Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Release\下;
(2)、Unity路径下有两个class.jar文件的不同路径,一个是在Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下,另一个是在D:\Program Files (x86)\Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes下。Unity中我们使用的是C#脚本,最终运行在Android上是由于Mono进行转换的,所以我们选用的jar文件是第一个路径下的。如果使用的是il2cpp,就要选择第二个路径下的jar文件。
将jar包导入库模块的操作如下:
4、因为新建的库模块中没有MainActivity.java,我们可以理解为启动这个模块的java类,例如在初始的app模块中就有一个MainActivity.java。因此需要新建一个MainActivity.java的文件,并且调用Unity包中的基类,具体操作如下:
点击Finish后,会在库模块的中创建出一个MainActivity的类
注意:生成MainActivity类后,会在res/layout下生成一个xml文件:main_layout.xml。这个文件是一个布局文件,
因为我们的库模块是为了跟Unity交互的,不需要界面布局,所以为了防止后面发生错误,这里删除掉这个文件
注意:要修改AndroidMainfest.xml文件,
然后仿照初始的app模块中的AndroidMainfest.xml文件,将里面的<activity></activity>部分复制到库模块的AndroidMainfest.xml的相同位置。
然后需要修改一下MainActivity这个脚本
5、下面就是在Android中编写Unity要调用的方法了,例如我这里只写一个简单的两数求和的方法:
6、Build库模块,然后将生成的配置文件导入到Unity工程中,操作如下:
然后稍等片刻,编译中....
然后在Project视图下,找到编译生成文件的所在目录unity_exchange/build/intermediates/bundles/debug,右键后打开所在文件夹
然后把debug文件夹下的classes.jar文件移动到libs文件夹中,并且把libs文件夹中的class.jar文件替换掉。然后将debug文件夹下的libs文件夹、res文件夹、AndroidManifest.xml文件导入到Unity的Assets/Plugins/Android文件夹下(没有这个文件夹需先创建)。
然后将三个文件移动到Unity的plugins/Android文件夹下。
7、创建Unity的C#脚本,并挂载到MainCanera上。为了在真机测试时能够看到求和的结果,这里我使用的是UGUI的Text来显示结果,同时通过Button的按钮来触发求和方法。如下图。
以下是主要的脚本代码。调用Android中的方法,并将求和结果显示在(Text)界面上
将脚本挂载到MainCamera上
8、Unity编辑器不能运行与Android相关的操作,所以需要导出apk文件到真机上测试。
注意:导出前要修改PlayerSettings相关配置。因为从Android工程中导入了一个AndroidManifest文件,这个文件中有Android工程的相关配置,例如工程名称、工程的包名、最低SDK版本、执行的Activity等等。因此我们要在Unity导出apk前修改一些相关配置,主要修改的是包名
最后是导出apk包到手机上或虚拟机上测试即可。
特别提醒:如果使用Android工程中初始的app模块来与Unity交互,需要修改部分配置。build.gradle文件中,将applicationId删除,然后将apply plugin后面的内容修改为"com.android.library"。
不建议大家使用初始的app模块,而是新建一个专门作为交互的Library模块。
unity与Android联合开发模式
比如:可以接一些仅为安卓提供的SDK
Android接讯飞语音识别SDK,只需要把识别的结果给unity就可以了。
主·辅 关系
用谁打包成apk,就用到谁的知识多一点。
1.unity导出一个工程(打包),到安卓这边去修改,修改完了由安卓打包一个apk。
2.要求安卓把某些功能封装好(提供插件)给unity用。
Android java
在Android每一个页面/界面,都是一个activity。
Unity cshap
1.unity是怎么做出一个apk的(apk是怎么来的)?
·unity把自己的代码编译一下,编完之后问Android要SDK,unity结合Android提供的这些SDK,再结合我们在unity里做的内容整合生成一个在安卓平台下的mainactivity,然后让这个mainactivity在安卓机上显示。
2.由unity打包出来的apk只有一个界面。打包出来的所有的内容做成一个Mainactivity(只有一个)。
路径:
复写-- 用安卓去扩展unity的功能:要求安卓去扩展mainactivity。
当插件–由安卓导出的插件plugins给到unity去,unity就把plugins和自己的内容整合一下打包成一个apk(但是这个plugin放在另一个地方,用mainactivity去调用plugin再回到mainactivity)。
java
1.导出jar包
2.导出aar包
c#
3.cshap去调用方法
实战
4.接一个SDK实战
以上是关于修改unity导出到安卓的activity的主要内容,如果未能解决你的问题,请参考以下文章