三丶ANDROID与UNITY调用系列 (2C# 调用 Java 方法,获取 Java 字段)

C# 调用 Java 方法,获取 Java 字段
这个就比较简单,C# 调用 Java 的底层原理是使用JNI调用,Unity已经提供了很方便的接口:

1.创建对象:C#中使用 AndroidJavaObject 类封装 Java 对象,new 一个 AndroidJavaObject 对象相当于调用对应的 Java 对象的构造函数。借助 C# 可变参数列表,可以给 Java 对象的构造函数传递任意数量的参数。

/ /第一个参数是 Java 类的完整包名,剩下的其他参数会传递给构造方法。
AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", "some_string");

比较android调用untiy那样的麻烦这个获取java代码就方便多了,android调用untiy可以封装一遍(理论可以按照自己想法封装,最后我试试在补漏片章中给出)
上面这个方法是找到一个 java对象并且实例化一下对象这也就是在java中是一个完整的对象了

2.调用对象方法:使用 AndroidJavaObject 类的 Call 方法,有泛型与非泛型的两个版本。

// 泛型版本,目的是指定返回值的类型
int int= jo.Call<int>("java中方法名称");
// 非泛型版本,处理返回值是void的情况。
jo.Call("java中方法名称"); // 不包含返回值得调用

3.获取类,主要用于获取静态字段或调用静态方法,常用来获取 UnityPlayer

// 传入类的完整包名 这个官方获取获取到就是一个类文件java的 ,需要注意一下必须填写完整路径 
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");//必须填写完整路径 类的

4.获取静态字段,只有泛型版本,因为不会有void类型的字段。。。
设置字段、获取对象字段、调用静态方法的代码类似,略。

//jc  = 上面 3中获取的java类文件对象  currentActivity = 需要获取他们当中的静态变量或者是常量  **java 类中==名称**
//这个获取到可能为空或者null 使用前需要判断后使用
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); 

参考了文章

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值