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

相關文章
相關標籤/搜索