【Android】 Unity与安卓通信(2)
- 安卓
- 1.新建一个安卓项目
- 2.新建一个Module
- 3.在Module里新建一个java文件
- 3.Rebuild Project
- unity
- 1.切换到安卓平台
- 2.添加aar文件
- 3.创建UI
- 4.编写一个C#脚本
- 5.挂在函数
- 运行
安卓
1.新建一个安卓项目
2.新建一个Module
创建一个Android Library的Module,一定要更改一下左边的选项,因为as默认是选择Phone&Tablet,取一个名字unitytoandroidlib
3.在Module里新建一个java文件
在Module里新建一个java文件,取名为Test
在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
1.切换到安卓平台
2.添加aar文件
在Assets文件夹下,创建一个Android文件夹,将在as中build出来的aar文件拖到Android文件夹下,如图所示
3.创建UI
4.编写一个C#脚本
编写一个C#脚本,取名为Test,必须要保证C#脚本的文件名和C#脚本里的类名一致否则无法挂载到UI按钮组件上
除此之外,实例化类对象时,括号中的字符串参数要填写在as中包名及类名
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视图下,为不同的组件挂载不同的函数达到函数监听响应的功能
运行