如何在Unity中调用Android的JAVA代码

兄弟们有没有人讲详细点的,我想分析下,如何在Unity中调用Android的JAVA代码
最新回答
轮回亦思伊人

2021-06-08 08:33:57

方法/步骤

1

首先要创建一个android项目

步骤阅读

2

因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中。接口包的所在地,打开Finder->应用程序->Unity->点击Unity图标,鼠标右键选择“显示包内容”->Contents->PlaybackEngines->AndroidPlayer->bin->classes.jar
。接口包引入工程后,开始编写JAVA代码。

3

UnityTestActivity是主Activity,Unity程序一起动就会调用这个Activity,这是在AndroidManifest.xml中配置的。需要继承UnityPlayerActivity,就是刚刚引入的classes.jar包中提供的接口类。UnityTestActivity对外提供了两个方法接口,StartActivity0(String
name) 方法与StartActivity1(String
name)方法,这两个方法是在Unity中使用C#脚本调用的,意思是调用后程序将打开一个新的Activity,参数name也是由C#脚本传递过来的,接着将传递的String参数继续传递给新打开的Activity。

步骤阅读

4

接下来就是设置xml文件和布局文件了。对于会android编程的同学就很熟悉了。

5

把写好的java代码发布成jar包。接下来就创建unity工程,Unity工程中文件夹的结构如下,Plugins->Android的名称不能修改,必需保持一致。接着把Eclipse中Android的工程文件拷贝至这里,除了Android工程中的src文件夹,将其余文件夹全部拷贝至Plugins->Android文件夹中。最后在Plugins->Android文件夹中创建bin文件夹,然后将刚刚生成的.jar文件拷贝进来,jar的名称可以随便修改,但是jar包里面必须是com->xys->class文件,否则运行程序后提示找不到类文件。

步骤阅读

6

接下来就是如何在C#中调用android的方法的代码了。

加入如下代码。

AndroidJavaClass jc = new
AndroidJavaClass("com.unity3d.player.UnityPlayer");

AndroidJavaObject jo =
jc.GetStatic<AndroidJavaObject>("currentActivity");

jo.Call("StartActivity0","第一个Activity");

先得到AndroidJavaClass,然后得到AndroidjavaObject就是当前Activity的对象,也就是在上面创建的主UnityTestActivity.JAVA。拿到对象后调用jo.Call()参数1表示调用UnityTestActivity.JAVA类中的方法名称,参数2表示该方法传递过去的参数。如下所示:“第一个Activity”与“第二个Activit”就是在C#中传递过去的字符串。

7

发布成android平台apk
媤惗ら

2022-09-29 19:29:03

方法/步骤

  1

  首先我们要创建一个android项目

  步骤阅读

  2

  因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中。接口包的所在地,打开Finder->应用程序->Unity->点击Unity图标,鼠标右键选择“显示包内容”->Contents->PlaybackEngines->AndroidPlayer->bin->classes.jar
。接口包引入工程后,开始编写JAVA代码。

  3

  UnityTestActivity是主Activity,Unity程序一起动就会调用这个Activity,它是在AndroidManifest.xml中配置的。它需要继承UnityPlayerActivity,然而它就是刚刚我们引入的classes.jar包中提供的接口类。UnityTestActivity对外提供了两个方法接口,StartActivity0(String
name) 方法与StartActivity1(String
name)方法,这两个方法是在Unity中使用C#脚本调用的,意思是调用后程序将打开一个新的Activity,参数name也是由C#脚本传递过来的,接着将传递的String参数继续传递给新打开的Activity。

  步骤阅读

  4

  接下来就是设置xml文件和布局文件了。对于会android编程的同学就很熟悉了。

  5

  把写好的java代码发布成jar包。接下来就创建unity工程,Unity工程中文件夹的结构如下,Plugins->Android的名称不能修改,必需保持一致。接着把Eclipse中Android的工程文件拷贝至这里,除了Android工程中的src文件夹,将其它文件夹全部拷贝至Plugins->Android文件夹中。最后在Plugins->Android文件夹中创建bin文件夹,然后将刚刚生成的.jar文件拷贝进来,jar的名称可以随便修改,但是jar包里面必须是com->xys->你的class文件,否则运行程序后提示找不到类文件。

  步骤阅读

  6

  接下来就是如何在C#中调用android的方法的代码了。

  加入如下代码。

  AndroidJavaClass jc = new
AndroidJavaClass("com.unity3d.player.UnityPlayer");

  AndroidJavaObject jo =
jc.GetStatic<AndroidJavaObject>("currentActivity");

  jo.Call("StartActivity0","第一个Activity");

  先得到AndroidJavaClass,然后得到AndroidjavaObject就是当前Activity的对象,也就是我们在上面创建的主UnityTestActivity.JAVA。拿到它的对象后调用jo.Call()参数1表示调用UnityTestActivity.JAVA类中的方法名称,参数2表示该方法传递过去的参数。如下图所示:“第一个Activity”与“第二个Activit”就是我在C#中传递过去的字符串。

  7

  发布成android平台apk
因为太帅被罚块

2023-02-12 05:56:13

生成一个java对象,传入java类名
var obj = new AndroidJavaObject("java.lang.String);
调用对象方法,传入方法名和调用java的参数,<>内是返回值,如果是void则不写<>
var result = obj.Call<string>("method", param);
调用静态方法,和对象方法调用类似
new AndroidJavaClass("com.unity3d.player.UnityPlayer").CallStatic<string>("method")