Unity3D研究院之與Android相互傳遞消息(十九)

  上一篇文章我們學習了Unity向Android發送消息,如果Android又能給Unity回饋消息那麼這就玩美了。恰好Unity for Andoid 和 IOS一樣都是可以相互與Unity發送與接收消息,這篇文章MOMO就和大家好好聊聊Android向Unity發送消息的方法。在讀本片博文之前,建議大家讀一下我上一篇文章Unity3D研究院之打開Activity與調用JAVA代碼傳遞參數(十八)有關數據打包方面在上一篇中已經說的很清楚,這裏就不再贅述。

我們在項目中創建兩個Activity一個是主Activity一個是新打開的Activity和內容方面與上一篇文章類似。

UnityTestActivity.java 主Activity ,提供一個接口方法StartActivity(),它是由Unity中調用

接着是TestActivity.java 打開這個界面後,程序將在這裏向Unity發送消息。 

 需要在程序頭引入包import com.unity3d.player.UnityPlayer; 因爲向Unity發送消息的靜態方法寫在這裏。

註釋1:意思是點擊發送按鈕後,程序將向Unity發送消息。UnityPlayer.UnitySendMessage() 參數1表示發送遊戲對象的名稱,參數2表示對象綁定的腳本接收該消息的方法,參數3表示本條消息發送的字符串信息,這個方法與IOS發送消息的方式非常相像。

接着,我們打開Unity工程將Android插件打包好複製在Unity工程當中,詳細打包過程請看上一章,將腳本Test.cs綁定在Main Camera對象中,此時由於UnityPlayer.UnitySendMessage()方法發送消息給MainCamera對象,所以需要在Main Camera對象綁定的腳本中去接收這個消息,也就是說要在Test.cs腳本中接收。

 

Unity3D研究院之與Android相互傳遞消息(十九) - 雨鬆MOMO程序研究院 - 1

(圖片比較大,點擊後瀏覽大圖)

 

下面我們看看Test.cs腳本

 註解1:讓代碼放置在using中是爲了告訴垃圾回收站及時的回收垃圾,建議這樣來寫代碼。AndroidJavaClass表示一個java類,AndroidJavaObject表示一個java對象,在上一章已經明確說明。另外還有一些其它的方法,比如調用靜態方法等,都在API中寫的很清楚,大家可以查閱學習。

註解2:剛剛調用的方法UnityPlayer.UnitySendMessage()參數2爲”message”,所以程序將調用 Main Camera對象的Test.cs腳本的message方法,參數爲Android傳遞過來的。最後在這裏修改了stringToEdit變量刷新了屏幕的UI。

 

Unity3D研究院之與Android相互傳遞消息(十九) - 雨鬆MOMO程序研究院 - 2

 

          打開程序後將啓動Unity畫面,如上圖在這裏我們寫了輸入框接收用戶的鍵盤輸入,最後用戶點擊commit按鈕程序將打開Android的Activity,並且將字符串“Please enter a string”做爲參數傳遞給了新Activity。

 

Unity3D研究院之與Android相互傳遞消息(十九) - 雨鬆MOMO程序研究院 - 3

 

         如上圖所示,在新打開的Activity中已經看到Please enter a string字符串已經顯示在界面當中,在佈局文件中同樣寫了Android的高級控件 輸入框與按鈕,在輸入框中輸入字符串“xuanyusong”(任意輸入),點擊保存按鈕將把”xuanyusong”剛剛輸入的字符串傳遞給Unity。

 

Unity3D研究院之與Android相互傳遞消息(十九) - 雨鬆MOMO程序研究院 - 4

 

如上圖所示,此時在Unity中字符串“xuanyusong”已經顯示在輸入框中,那麼這樣就比較完美了實現發送與接收消息。希望大家繼續支持雨鬆MOMO程序研究院。

 

源碼下載地址:http://vdisk.weibo.com/s/abEoV

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章