当前位置:   article > 正文

Unity C#和安卓原生专题一 C#和Android Java交互

Unity C#和安卓原生专题一 C#和Android Java交互

前言 

C#和iOS Obj-C交互的方法,和Android交互也一样简单,主要是Unity提供了非常方便的辅助类,基本不需要和JNI打交道

一 、 C#中关于Android的几个基本概念

1.1 创建或获取类

第一种 new AndroidJavaClass()来创建

AndroidJavaClass jc = new AndroidJavaClass("com.example.mygame.MyActivity");

1.2 创建或获取JAVA对象

 第一种 我们首先创建了一个AndroidJavaClass对象,并指定了Java类的完全限定名。然后我们调用了这个Java类的getInstance静态方法,并将返回的对象存储在AndroidJavaObject

  1. AndroidJavaClass jc = new AndroidJavaClass("com.example.mygame.MyActivity");
  2. AndroidJavaObject jo = jc.Call<AndroidJavaObject>("getInstance");

第二种 我们首先创建了一个AndroidJavaClass对象,并指定了UnityPlayer类的完全限定名。然后我们使用GetStatic<AndroidJavaObject>获取了currentActivity静态字段。最后我们调用了MyJavaMethod方法,并传入了两个参数

  1. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  2. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  3. jo.Call("MyJavaMethod", param1, param2);

第三种 使用AndroidJavaObject 调用 Call<AndroidJavaObject>();

  1. public static AndroidJavaObject CallReturnObj(AndroidJavaObject obj, string name, object p1) {
  2. return obj.Call<AndroidJavaObject>(name, p1);
  3. }

1.3 获取属性

第一种 我们首先创建了一个AndroidJavaClass对象,并指定了Java类的完全限定名。然后我们使用GetStatic<int>获取了MY_STATIC_FIELD静态字段的值,并将这个值存储在int类型的变量中

  1. AndroidJavaClass jc = new AndroidJavaClass("com.example.mygame.MyActivity");
  2. int value = jc.GetStatic<int>("MY_STATIC_FIELD");

二 C#调用java方法


使用 AndroidJavaClass和 AndroidJavaObject可以很方便的调用java方法。最常用的是AndroidJavaObject的Call方法;

官方文档:http://docs.unity3d.com/ScriptReference/AndroidJavaObject.html
这个Call是支持多参数的,第一个参数必须是方法名,第二个开始则是各种参数。如果有返回值则需要使用泛型版本Call<Type>。

2.1 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/508548
推荐阅读
相关标签
  

闽ICP备14008679号