app-debug.aar
??将app-debug.aar文件解压,得到根目录下的classes.jar文件,请注意这个classes.jar文件并不是最开始从unity中导入到android的classes.jar文件,而且你写的android代码的class文件的压缩包(可以解压看看里面实际的内容)。之后unity所需要使用的是res文件夹下的文件,classes.jar(android的)和AndroidManifest文件。
解压后的文件
(ps:理论上来说现在版本的unity是直接可以使用android的aar包的,但是博主在实际使用过程中一直会有问题,所以这边所使用的还是jar包和res文件的形式,如果有小伙伴使用aar成功的话请告知博主)
3 Unity上的操作 3.1 创建Unity项目??打开unity,创建项目名称为UnityDemo,layout的格式改为2by3,project下修改为One column layout(纯粹是个人喜欢这种布局的方法,当然你也可以用其他的)。
One column layout
2by3
??往unity添加一个canvas(画布),设置render mode为screen space camera(跟随相机的模式),然后设置ui scale mode 为scale with screen camera 并设置x,y为600和400。
添加canvas
??往canvas中添加一个text和一个button,并调整他们的大小和位置,用于之后的事件操作和显示。
text
最终的ui显示
??然后将我们之前导出的jar和res文件拷贝到Plugins/Android文件夹下。
导入文件
3.2 编写unity脚本??新建一个AndroidControl的C#脚本,并将其挂载到Canvas对象上。(直接通过鼠标左键拖动到Canvas上)。打开脚本,在OnStart()方法中获取android的MainActivity对象。
private AndroidJavaObject jo; { //获取Android的Java接口 AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); jo = jc.GetStatic<AndroidJavaObject> ("currentActivity"); }??首先获取unityPlayer实例,每个unity app在启动的时候都会有一个unityPlayer实例。通过获取该实例里面currentActivity对象,其实就是我们的MainActivity实例。我们可以在android studio中查看源码的方式知道为什么是获取这个currentActivity。
UnityPlayer
??创建方法ShowAndroidTime来获取系统时间并进行显示。
??首先调用MainActivity中的getNowTime方法得到时间,然后在调用showToast方法让时间Toast出来。接下来是要对button设置点击事件去调用这个ShowAndroidTime方法。选中button,然后砸onclick点击+。由于我们的脚本是挂在到Canvas上的,所以需要选择canvas对面里面的AndroidControl脚本的ShowAndroidTime方法。
添加点击事件
3.3 导出Android app??将scene保存,然后点击file-->build settings,选择platform为android,然后点击switch platform,同时将要导出的scene add进来。