1. 程式人生 > >Android和Unity3D之間的資料互動

Android和Unity3D之間的資料互動

如果將一個unity3D專案匯出成Android工程,然後將該專案作為另一個Android專案的module使用時,如果涉及到相互呼叫,可以寫一個Activity繼承自UnityPlayerActivity

public class UnityActivity extends UnityPlayerActivity {

,然後兩邊就可以實現相互呼叫了,方法對於Android比較簡單。 

之後如果在配置檔案裡面沒有將改Activity的配置設定成android:process=":unity"的方式的話,會出現一個現象,當你呼叫的動畫效果結束以後整個APP都會被關掉,原因的話是UnityActivity中存在的unityPlay物件在onDestory方法中有一個quit方法,檢視該方法原始碼發現裡面會kill掉整個程式,網上說有方案可以自己寫一個類繼承UnityPaly類然後重寫kill方法,但是感覺沒啥作用。

@Override
protected void kill() {

}

具體的規避方式還是要通過android:process=":unity"加到配置裡面來規避,但是這種方式的話會導致中間無法實現資料的互動,原因的話就是加了android:process=":unity"之後該Activity變成了單獨的程序,程序之間是無法實現記憶體共享的,這個時候要使用資料互動的話,那就需要使用程序間通訊的方案了,比如IBinder方式等。