Android Unity3d 通信總結

Unity3d與Android交叉開發主要有兩種方式,一是Unity3d導出Android工程,二是Android生成jar包,導入到unity3d plugin/bin/目錄下,本篇分析第二種方式

Unity3d採用反射的方式調用Android jar包裏面的方法

	void Start(){
		#if !UNITY_EDITOR
		unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
		currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
		connectionClient = new AndroidJavaObject("com.test.connection.ConnectionClient", currentActivity);
                connectionClientClass = new AndroidJavaClass("com.test.connection.ConnectionClient");
                #endif
         }

反射生成ConnectionClient對象。

    public ConnectionClient(Activity activity){

        init(activity);
    }
Java類的構造方法


	public void CallPublicMethod(){
		Debug.Log("CallPublicMethod");
		connectionClient.Call("publicMethod");

	}
	public void CallStaticMethod(){
		Debug.Log("CallStaticMethod");
		connectionClientClass.CallStatic("staticMethod");
	}
通過connectionClient對象就可以調用ConnectionClient的公共方法,靜態方法



	public bool CallMethod(){

		Debug.Log("CallMethod");
		bool result = connectionClient.Call<bool>("publicMethodReturnBoolean");
		Debug.Log("CallMethod result:"+result);
		return result;
	}
利用泛型調用有返回值的方法,基本類型和string都可以,C#的object和Java object不能互通。

public void CallMethod(){

	CallMethodWithArgs ("a", "b", "c");//第一種可變長度參數方式
	//connectionClient.Call ("method", "a", "b", "c");//第二種直接調用
}
private void CallMethodWithArgs(params string[] args){
	connectionClient.Call ("method", args);
}

若是要傳遞多個參數,可以採用以上兩種方式


	void ReceiveMethod(string msg){
		print("Receive from Android");
		Debug.Log (""+msg);
	}

Unity3d Receiver通過設置一個方法Receive專門處理Android 發送消息,也能起到簡單的通信


    public static void noticeUnity(String message) {
        UnityPlayer.UnitySendMessage("Receiver", "RecevieMethod", message);
    }

Android端通過UnityPlayer.UnitySendMessage("Receiver", "ReceiveMethod",message);向Uniry傳遞消息。


Unity3d導出工程供Android調用參考這篇文章

http://blog.csdn.net/crazy1235/article/details/46733221


http://blog.csdn.net/acnt3w/article/details/52817071


發佈了57 篇原創文章 · 獲贊 48 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章