之前看了很多unity和安卓AS的交互文章,后面自己试了试自己的想法,感觉比其他的都要简便一些,特此记录下来。
1.AS新建一个项目
,Name,PackageName随意。2.在新建好的项目app处点击右键创建一个new module,后面我们导出的.aar就是它,
,注意这里一点要选AndroidLibrary,ModuleName和packageName随意,后面用的时候可以在导出的地方看这个名字,unity里调用的时候得和这个packageName一致,后面再说。3.在新建的NewModule
的这个路径下右键New一个Javaclass
,注意要有这种层级目录,上面得选
Project.
4.我们这里新建一个JavaClass叫Test,里面写一个创建一个方法,我们先来一个无参,无返回值的方法,命名为AsFunC.里面也很简单,输出一句话就行
登录后复制
public void AsFunC(){
Log.d("yx","我是AS的方法里的内容");
}
再来一个有参,无返回值的方法
登录后复制
public void AsFunCHavePar(String str){
Log.d("yx","我是AS的方法里的内容"+"Unity里传入的参数"+str);
}
再来一个无参,有返回值的方法
登录后复制
public String AsFunCHaveReturnType(){
return "我是AS的有返回值的方法";
}
最后再来一个有参数有返回值的方法
登录后复制
public String AsFunCHaveReturnType(String str){
return "我是AS的有返回值的方法"+"Unity里传入的参数"+str;
}
好,然后
将这个module 打包出去,几秒钟就成功了
,得到了一个.aar文件,至此AS里的工作就完成了,再来看Unity里。
1.将刚刚打包出来的.aar文件拖到
Assets/Plugins目录下,默认是没有这个Plugins目录的需要自己创建。
2.新建一个脚本,里面写一个方法。
登录后复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UnitySc : MonoBehaviour
{
public void CallAsFunC()
{
//这里括号里的参数填入导出的module的packageName和Class的名字,我这里是
com.yx.mylibrary.Test
using (var asClass = new AndroidJavaObject("com.yx.mylibrary.Test"))
{
}
}
}
using里面的内容也很简单
登录后复制
using (var asClass = new AndroidJavaObject("com.yx.mylibrary.Test"))
{
asClass.Call("AsFunC");//调用的无参无返回值的方法
asClass.Call("AsFunCHavePar", "Unity里传入");//调用的有参无返回值的方法,参数为“Unity里传入”
Debug.Log(asClass.Call<string>("AsFunCHaveReturnType"));//Debug里调用的无参有返回值的方法
Debug.Log(asClass.Call<string>("AsFunCHaveReturnType", "Unity里传入"));//Debug里调用的有参有返回值的方法
}
注意Call方法的第一个参数,参数应该为AS那边的方法的名字 不要输入错误了。
3.创建一个按钮,上面绑上这个方法,好然后直接打包为安卓项目,连上测试机运行,在AS里logcat看运行结果
目录
AS端配置
Unity里
结果和我们AS里写的方法里也一致,好了就这样就可以在unity里调用AS的Java方法了。这也只是一种方式而已,大家还有其他方式也可以一起讨论。
后面有空再说说AS里调用unity的方法。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删