Unity3d能夠直接打包成APK或Android項目供Android二次開發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
默認的UnityPlayerActivity類通常不動,咱們新建一個MyClass繼承UnityPlayerActivity 調用u3d方法,第一個參數是u3d中的對象名,第二個是方法名,第三個是參數
UnityPlayer.UnitySendMessage(「GameObject」, 「unityMethod」, 「hi~」);code