Unity3d和Android的互相调用(一)

摘要

游戏开发中进行会用到和原生组件进行相互调用,比如说;游戏中需要支付,那么就会通过Unity3D调取Android接口的方法。那么我们来看一下如何进行这个调用效果的。

原理

unity3d实现了这样的结构,那么这样的结构是什么呢,让我们把他归一归类讲解。

Unity调用Android的方法

1. 没有返回值的普通方法

C#中调用方式call(String moduleName)

AndroidJavaObject jo = new AndroidJavaObject("android.content.res.Configuration");
jo.Call("setToDefaults");

在java中的方法格式为

public void setToDefaults(){
   //你的方法逻辑
}

2. 带有返回值的普通方法

AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", "some string");
    int hash = jo.Call("hashCode");

在java中的方法格式为

public int hashCode(){
   //你的方法逻辑
}

3. 没有返回值的静态方法

AndroidJavaObject jo = new AndroidJavaObject("android.os.Binder");
jo.CallStatic("flushPendingCommands");

在java中的方法格式为

public  static void flushPendingCommands(){
   //你的方法逻辑
}

4. 带有返回值的静态方法

AndroidJavaObject jo = new AndroidJavaObject("java.lang.String");
string valueString = jo.CallStatic("valueOf", 42.0);

在java中的方法格式为

public  static string valueOf(){
   //你的方法逻辑
}

Android调用unity3d的方法

只需要在你导入了游戏打包后的数据后,就可以通过如下代码段,来进行Android调用unity3d的方法了。

UnityPlayer.UnitySendMessage("unitychan", "next", "");

UnitySendMessage中第一个参数为Unity3d中模型的名字,第二个参数为C#脚本中的方法名,第三个为方法的参数。

注意:使用这个方法前,请确认你的Unity3d中该unitychan对象身上挂着的脚本中有这个方法。

例如:

    void next()
    {
        anim.SetBool("Next", true);
    }

来源:CSDN,作者:喜欢雨天的我
原文:https://blog.csdn.net/qq_15807167/article/details/53573656
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章