之前看了很多unity和安卓AS的交互文章,后面自己试了试自己的想法,感觉比其他的都要简便一些,特此记录下来。

AS端配置

1.AS新建一个项目

unity android调用 android调用unity界面_安卓

,Name,PackageName随意。2.在新建好的项目app处点击右键创建一个new module,后面我们导出的.aar就是它,

unity android调用 android调用unity界面_安卓_02

,注意这里一点要选AndroidLibrary,ModuleName和packageName随意,后面用的时候可以在导出的地方看这个名字,unity里调用的时候得和这个packageName一致,后面再说。3.在新建的NewModule

unity android调用 android调用unity界面_安卓_03

的这个路径下右键New一个Javaclass

unity android调用 android调用unity界面_android_04

,注意要有这种层级目录,上面得选

unity android调用 android调用unity界面_unity android调用_05

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;
    }

好,然后

unity android调用 android调用unity界面_unity3d_06

 将这个module 打包出去,几秒钟就成功了

unity android调用 android调用unity界面_unity3d_07

,得到了一个.aar文件,至此AS里的工作就完成了,再来看Unity里。

Unity里

1.将刚刚打包出来的.aar文件拖到

unity android调用 android调用unity界面_unity android调用_08

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看运行结果

unity android调用 android调用unity界面_unity3d_09

目录

AS端配置

Unity里

 

结果和我们AS里写的方法里也一致,好了就这样就可以在unity里调用AS的Java方法了。这也只是一种方式而已,大家还有其他方式也可以一起讨论。

后面有空再说说AS里调用unity的方法。