2013-09-29 10 views
5

Ho lo stesso problema menzionato in questo argomento Integrating Unity with Eclipse: Back Button Click ma le soluzioni suggerite non hanno funzionato.Come restituire da Unity Player alle precedenti attività Android in esecuzione?

Ho un Unity Player incorporato in un'applicazione nativa Android. Posso avviare Unity Player senza problemi, ma ora voglio tornare alla mia attività precedente con il pulsante Indietro. Ho già provato Application.Quit dal lato Unity e finish() dal lato Android, entrambi chiudono l'intera applicazione. Ho anche provato ad avviare una nuova attività dal contesto Unity, ma anche questo non funziona, penso che sia perché lavoro con i frammenti. L'impostazione della mia attività è la seguente:

MainAttività in cui sono incorporati più frammenti. Due di questi contengono elenchi dai quali posso avviare una nuova attività che mostra le viste dettagliate degli elementi dell'elenco. Le viste di dettaglio sono anche frammenti in cui è possibile scorrere verso sinistra e destra verso l'elemento precedente/successivo (simile all'app gmail). Dalla vista dettagli, è possibile avviare Unity per ottenere alcuni potenziamenti con il framework vuiforia di qualcomm.

fino a questo punto tutto funziona, ma non posso tornare da UnityPlayer alla visualizzazione dettagli.

Qualcuno ha qualche idea su come raggiungere questo obiettivo?

Grazie!

+0

Solo un rapido avviso, il tag Unity è riservato allo strumento Unity di Microsoft. Ritornato come Unity3D. – Jerdak

risposta

1

Sto lavorando a un progetto Android che coinvolge frammenti Unity3d al momento e sembra che abbia un problema simile.

Per quanto ne so, non è colpa dei frammenti - è Unity che fa qualcosa di divertente come intercettare gli eventi di stampa del pulsante indietro. Quello che ho fatto è stato l'override dei metodi indicati per determinare cosa sta succedendo quando si preme un pulsante indietro:

Il problema che ho scoperto è che a volte non messaggi di log vengono visualizzati quando si preme il pulsante indietro - cioè non è effettivamente registrato . All'inizio ho pensato che avesse qualcosa a che fare con la mia chiamata UnityPlayer.pause() nel metodo onResume() ma quando ho ripreso il progetto stamattina ho scoperto che il problema persiste, ed è intermittente.

Se trovo una soluzione, modificherò il mio post in questo thread. Spero che la spiegazione sia stata almeno di qualche aiuto.


Edit:

Date un'occhiata a questo link: Can't pass back event from Unity to android library jar. C'è una soluzione che puoi implementare nel tuo progetto Unity per aiutarti nella gestione della stampa con il pulsante posteriore.

ho fatto e poi effettuato un po 'di test e sembra che il metodo viene chiamato onBackPressed() tutto a posto quando l'oggetto è UnityPlayer NON pausa. Questo mi porta a credere che il metodo UnityPlayer.pause() debba essere utilizzato solo quando l'app viene messa in background, non quando semplicemente non hai bisogno del modello Unity in un dato momento.

4

Quando si preme di nuovo l'unità, l'intero processo verrà ucciso. Pertanto, quando si avvia un'attività di unità attraverso l'attività di Android, avviare l'attività dell'unità in un processo diverso. Puoi farlo dichiarandolo nel file manifest Android del progetto.

+0

Questo l'ha risolto. Ho cercato una risposta a questo per qualche ora. Quindi grazie;) –

2

È necessario aggiungere AndroidManifest.xml righe successive di codice per UnityActivity.java:

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

E 'verrà eseguito UnityActivity come un altro processo e il comando Unità: Application.Quit(); Chiuderà solo il processo Unity.

Inoltre, se non sarà sufficiente, è possibile aggiungere tali linee alle attività che iniziano UnityActivyty. Ma attenzione, un'altra attività del pacchetto fornirà le proprie condivisioni condivise e altre cose.

+0

Ha funzionato come un fascino, ora Unity non uccide attività/app precedente. Grazie – Pelanes

0

// Basta aggiungere sotto due righe di codice nel modulo di unità Unity. sotto UnityPlayerActivity

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

e l'unità di nuovo il tasto evento Click aggiungere questo codice sotto Application.Quit();

Funziona perfettamente per me

Problemi correlati