之前看了很多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的方法。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删