Unity与安卓通信(2)

Unity与安卓通信(2)

安卓

1.新建一个安卓项目

Unity与安卓通信(2)

2.新建一个Module

创建一个Android Library的Module,一定要更改一下左边的选项,因为as默认是选择Phone&Tablet,取一个名字unitytoandroidlib

Unity与安卓通信(2)

Unity与安卓通信(2)

3.在Module里新建一个java文件

在Module里新建一个java文件,取名为Test

Unity与安卓通信(2)

在Test.class里编写如下代码

package com.example.unitytoandroidlib;

import android.util.Log;

public class Test {

       //无参无返回值

       public void NoParm(){

           Log.i("Unity","This is NoParm");

       }

       //有参有返回值

       public int OneParm(String val){

           Log.i("Unity",val);

           return 10;

       }

       //静态方法有参有返回值

       public static int sOneParm(String val){

           Log.i("Unity","sOneParm"+val);

           return 20;

       }

}

3.Rebuild Project

这一次我们是在创建的unitytoandroidlib下生成了aar文件

Unity与安卓通信(2)

unity

1.切换到安卓平台

2.添加aar文件

在Assets文件夹下,创建一个Android文件夹,将在as中build出来的aar文件拖到Android文件夹下,如图所示

Unity与安卓通信(2)

3.创建UI

Unity与安卓通信(2)

4.编写一个C#脚本

编写一个C#脚本,取名为Test,必须要保证C#脚本的文件名和C#脚本里的类名一致否则无法挂载到UI按钮组件上

除此之外,实例化类对象时,括号中的字符串参数要填写在as中包名及类名

Unity与安卓通信(2)

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Test : MonoBehaviour

{

   // Start is called before the first frame update

   void Start()

   {

   }

   // Update is called once per frame

   void Update()

   {

   }

   public void TestOne()

   {

       //实例化一个此类对象

       AndroidJavaObject jo = new AndroidJavaObject("com.example.unitytoandroidlib.Test");

       jo.Call("NoParm");

   }

   public void TestTwo()

   {

       //实例化一个此类对象

       AndroidJavaObject jo = new AndroidJavaObject("com.example.unitytoandroidlib.Test");

       int result = jo.Call<int>("OneParm","This is OneParm");

       Debug.Log("TestTwo=" + result);

   }

   public void TestThree()

   {

       //找到此类,从而调用其中的静态方法

       AndroidJavaClass jc = new AndroidJavaClass("com.example.unitytoandroidlib.Test");

       int result = jc.CallStatic<int>("sOneParm", "This is sOneParm");

       Debug.Log("TestThree=" + result);

   }

}

5.挂在函数

选中UI按钮组件,在inspector视图下,为不同的组件挂载不同的函数达到函数监听响应的功能

运行