2013-09-29 66 views
5

我遇到了與本主題Integrating Unity with Eclipse: Back Button Click中提到的相同的問題,但建議的解決方案無效。如何從Unity Player返回到之前運行的Android活動?

我有一個嵌入在原生Android應用程序中的Unity Player。我可以毫無問題地啓動Unity Player,但現在我想用後退按鈕回到之前的活動。我已經嘗試從Unity側Application.Quit和完成()從android側,都關閉了整個應用程序。我也嘗試從Unity環境中啓動一個新的Activity,但這也不起作用,我想這是因爲我使用了片段。我的活動設置如下:

MainActivity其中嵌入了多個片段。其中兩個包含列表,我可以從中開始一個新的活動,它顯示了List元素的詳細視圖。細節視圖也是可以左右滑動到上一個/下一個元素(類似於gmail應用程序)的片段。從細節視圖中,您可以啓動Unity,使Qualcomm vuforia框架具有一些增強功能。

到目前爲止一切正常,但我無法從UnityPlayer回到細節視圖。

有沒有人有任何想法如何實現這一目標?

謝謝!

+0

只是一個快速向上的Unity標記是爲微軟的Unity工具保留。重新標記爲Unity3D。 – Jerdak

回答

1

我正在致力於一個涉及片段Unity3d的Android項目,看來我也遇到了類似的問題。

據我所知,這不是碎片的錯誤 - 它是一個有趣的事情,就像攔截後退按鈕按下事件一樣。我所做的是覆蓋下面的方法來確定是怎麼回事當按下後退按鈕上:

我發現的問題是,當我按下後退按鈕有時會出現沒有日誌信息 - 即它不是實際註冊。起初,我認爲這與我在onResume()方法中調用UnityPlayer.pause()有關,但是當我今天早上再次運行該項目時,問題仍然存在,並且是間歇性的。

如果我想出了一個解決方案,我會在這個線程中編輯我的帖子。我希望這個解釋至少有一些幫助。


編輯:

看一看這個鏈接:Can't pass back event from Unity to android library jar。那裏有一個解決方案,你可以在你的Unity項目中實現這個解決方案來幫助後退按鈕處理。

我這樣做,然後進行了一些更多的測試,看起來好像onBackPressed()方法在UnityPlayer對象是NOT暫停時被調用。這使我相信UnityPlayer.pause()方法應該只在應用程序放入後臺時使用,而不是在給定時間不需要Unity模型時使用。

4

當你在統一活動中按回時,整個過程將被殺死。因此,當您通過android活動開始統一活動時,可以在不同的過程中啓動統一活動。你可以在項目的android manifest文件中聲明這個。

+0

這解決了它。 現在幾個小時一直在尋找答案。所以謝謝;) –

2

您應該添加AndroidManifest.xml UnityActivity的下一行代碼。Java的:

<activity 
     android:name=".ui.activities.UnityPlayerActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" <-- THIS 
     android:process=":unityplayer" <-- AND THIS 
     ...  
    > 
     ... 
    </activity> 

這將運行UnityActivity像另一個進程,並統一命令:Application.quit();只會關閉Unity進程。

此外,如果它不夠用,可以將這些行添加到啓動UnityActivyty的活動中。但要小心,另一個包活動將提供其自己的sharedPreferences和一些其他的東西。

+0

像魅力一樣工作,現在Unity不會殺死以前的活動/應用程序。謝謝 – Pelanes

0

//只需在下面添加兩行代碼在Unity模塊中顯示。 UnityPlayerActivity

 android:launchMode="singleTask" 
     android:process=":unityplayer" 

統一下 後退按鈕單擊事件添加此代碼如下 Application.quit();

它爲我完美地工作