unity是5.5,android studio是2.3.3
一:在android Studio导出aar插件到unity
说明一下aar与jar插件的区别:jar是只包含配置文件和class文件,而aar插件是包括资源的,两者都能用压缩软件打开。
首先打开as建立新的工程(一直下一步下一步就行了)
打开之后如果你的也有我这种错误报错(没有的可以省略这一步,不知道是不是我的as有问题,家里的没毛病,公司的就这毛病QAQ)
然后打开你的Gradle文件(有两个,别打开错了)
原来是这样的
然后修改下成下面这样,在点击右上角的try again
ok ,开始我们的插件制作
1:首先在你的unity安装目录下面找到calsses.jar包
(Unity5.5\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes)
然后将这个包拷贝到AS的libs文件夹下面(可以ctrl+c/v)
2:点击这个jar包右键点击Add as library,然后稍等片刻
3:接着我们重新修改一下gradle
把:
apply
plugin
:
'com.android.application' 修改成
apply
plugin
:
'com.android.library'
删除applicationId "com.lj.test10"这一行
(熟悉的android开发者应该知道这个是把当前的项目变成了library项目,不熟悉的就跟着我弄啦)
最后的效果
4:开始编写程序(我在这编写的是一个简单的打电话程序)
(1)打开mainActivity.class,让他继承UnityplayerActivity 具体如下
然后配置你的AndroidManifast.xml,添加打电话的权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
5:然后build,然后之后找到你build之后的aar插件
,点击show in explorer,然后找到outputs文件夹下面的aar文件夹下面的aar插件
6:导入到unity中
然后在你的unity安装路径下面(Unity5.5\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk)找到你的Androidmanifest.xm文件也导入都按untiy中
修改一下:
ps:这里我之前出现好几个问题,如果不导入这个最后打包会出现两个图标,或者说直接就不会实现打电话这个功能(最后弄到的这个方案)
7:开始编写c#代码
我的场景是这样,然后给button添加事件
8:OK开始打包(别忘了包名设置)
(1)打包途中出现了这样的错误
莫急,这个是因为你开始做插件的时候导入了classec.jar,然后unity打包的时候又会添加一次,所以我们要做的就是把aar插件中的classes.jar删除
用压缩软件打开你的aar插件,然后找到libs文件夹,删除里面的classes.jar
(2)回到unity继续build
然后又提莫的出现问题了(我开始也是一脸蒙蔽)
这个问题嘛....还是用压缩软件打开你的aar插件,然后删除res这个文件夹
好了,再build应该就没问题了
9:最后打开使用。
二:利用scheme 启动unity app
定义:android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。
1:首先我新建立了一个android工程,页面代码如下
弄完之后build到你的手机上面。
2:在你的刚才制作的aar插件的AndroidManifest.xml配置文件中添加如下代码
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="test.app"
android:scheme="myscheme" />
intent-filter>
ps:data里面的scheme字符以及host都可以自己随便定义
然后修改你的mainActivity.class文件
然后再把这个aar插件导出,删除libs里面的classes.jar包和res文件夹(好吧,有点繁琐,有大神知道更简单的可以指导下),添加到Unity中
ps:这里会问,为什么要回到as工程里面配置清单,不可以在unity的AndroidManifest.xml直接配置吗?答案是可以的,但是最后这样导致了两个情况
(1):是我在插件中写了一个Toast打招呼,单独点开app是可以打招呼的,然后利用scheme跳转打开居然这个打招呼就没了
(2):是我在利用scheme打开的时候如果我想在untiy中获得这个scheme协议是获取不到的(这种情况大多用在scheme中含有参数的时我们 需要获取)
3:导入到Unity中 ,编写C#代码
4:build 到手机,效果如下
延伸一点:如果知道怎么做之后我们就可以实现android app打开unity build 的app,也可以untiy app打开android 的app....
有什么问题可以问我,或者我有什么问题请指导下,三克油!!!