前言
不知道大家有没有遇到过这样的问题,一个unity工程里在安卓代码中常常需要写很多方法,而网上大部分教程都是教大家把unity的classes.jar文件提取出来再在安卓中新建MainActivity把方法写入MainActivity中,如果每次要添加一些方法就这样做的话非常的麻烦所以下面我给大家介绍一种较为方便的添加安卓代码的方法。
正文
我们先新建一个AndroidStudio项目创建好library(详细方法在我的博客中有提到需要了解的请移步新建library)
然后我们在library下新建两个类,在后面我们可以用两种方法去调用安卓中的方法,后面也会介绍为什么这样写
Test.class
package com.hasee.librarydemo;
public class Test {
public int add(int a,int b){
return a+b;
}
}
Test2.class
package com.hasee.librarydemo;
public class Test2 {
public static int add(int a,int b){
return a+b;
}
}
然后我们生成一个Jar包,生成方法在我博客里有,我这里就不详细介绍了(AndroidStudio如何生成Jar包)
新建一个Unity工程,并创建好对应的文件夹,把生成的Jar包放入对应文件夹
这里我新建了一个测试脚本,然后我们就可以开始写调用的代码了
JarTest.cs
public class JarTest : MonoBehaviour {
//新建了两个Text用来显示结果
public Text text;
public Text text2;
void Start () {
//Test类的调用方法
//创建一个Test对象(因为默认无参,所以这里不需要加额外参数,如果需要用带参的构造方法,在后面加入参数就行了)
AndroidJavaObject obj = new AndroidJavaObject("com.hasee.librarydemo.Test");
//调用Test的add方法并显示在Text上
text.text = obj.Call<int>("add", 3, 5).ToString();
//Test2类的调用方法
//创建Test2类的引用
AndroidJavaClass test2 = new AndroidJavaClass("com.hasee.librarydemo.Test2");
//调用Test2的add方法并显示在Text2上(因为Test2的add方法是静态的所以可以直接用类调用)
text2.text = test2.CallStatic<int>("add", 3, 6).ToString();
}
}
打包并运行程序得到结果,调用成功
总结
用如上的方法能比拷贝classes.jar并新建MainActivity的方法方便很多,而且后期要添加方法也只需要多添加一些jar包就行了,如果需要安卓调用Unity还是需要添加classes.jar,不过还是和上述一样无需编写MainActivity。以上方法适用于无需安卓权限的安卓方法调用,如果涉及到需要安卓的权限还需要加入AndroidManifest.xml文件并设置主Activity,这个应该不是很难在这篇文章就不详细介绍了,如果以后有时间我可以写一写