Unity3d与Android通讯

基础

Unity3d能够直接打包成APK或Android项目供Android二次开发android

Unity3d调用Android方法

先介绍一下u3d中调用Android的一些API
UnityPlayer是unity3d引擎自带jar包,两端通讯的关键。
currentActivity是Android须要的上下文。bash

AndroidJavaClass ajc=new AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject ajo=ajc.GetStatic(“currentActivity”);

jo.Call(method ,parameter );    //调用实例方法
jo.Get(method ,parameter );     //获取实例变量
jo.Set(method ,parameter );     //设置实例变量
jo.CallStatic(method ,parameter );//调用静态方法
jo.GetStatic (method ,parameter );//获取静态变量
jo.SetStatic (method ,parameter );//设置静态变量
复制代码

有了这些API就能够开启与Android的通讯了,能够咱们本身写Android代码,也能够用别人写好的,只要知道它的类名,方法名和须要的参数。
u3d调用代码,ao就是上面第一步Android代码须要的context,这个ao是全局的,其余类或方法均可以使用,不用从新获取实例spa

void OnGUI()
    {
        if (GUI.Button(new Rect(150, 150, 250, 135), "调用Android原生方法"))
        {
            AndroidJavaClass ac = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject ao = ac.CallStatic<AndroidJavaObject>("currentActivity");
            AndroidJavaObject androidClass = new AndroidJavaObject("cn.nutown.android_project.MyAndroidClass");//咱们Android的类名
            androidClass.Call("showMassege",ao,"hi!");//对应咱们Android的方法须要的参数
        } 
}
复制代码

效果图 3d

avatar

Android调用Unity3d方法

默认的UnityPlayerActivity类通常不动,咱们新建一个MyClass继承UnityPlayerActivity 调用u3d方法,第一个参数是u3d中的对象名,第二个是方法名,第三个是参数
UnityPlayer.UnitySendMessage(“GameObject”, “unityMethod”, “hi~”);code

相关文章
相关标签/搜索