2014-02-18 2 views
6

Я пытаюсь реализовать Pausing in Unity с помощью функции OnApplicationPause.Возобновление приложения на Android с Unity

Кажется, что он отлично работает, когда я выхожу из своей игры (на Android), нажав кнопку «домой», а затем возвращаюсь через список активных приложений, но когда я нажимаю значок игры на главном экране, он перезапускает игру вместо того, чтобы приносить мне назад.

Есть ли способ обойти это?

ответ

0

Должно быть возобновлено, если вы вернетесь в игру. Если нет, значит, ваш игровой поток автоматически перезапустится, когда он вернется из паузы.

В вашей игре попробуйте проверить состояние OnApplicationPause и отладить оттуда. Образец кода находится в этой теме http://answers.unity3d.com/questions/286939/detecting-when-applicationdidbecomeactive-in-unity.html

+0

Может быть, потому что у меня есть 2 сцены в моем проекте? – tvoloshyn

+0

Нет, это не должно быть проблемой. Одна из возможностей заключается в том, что ваше приложение получило ошибку при возобновлении, и именно поэтому оно перезапустилось. Возможно, вы захотите проверить logcat, как в ответе @Enzign. –

0

По моему опыту эти странные вещи случаются, когда у вас нет всей необходимой информации в вашем файле AndroidManifest.xml. В частности, эта строка:

<activity android:name="your_name_here.Activity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:screenOrientation="your_orientation_here_if_needed"> 

Убедитесь, что здесь находится «android: configChanges». В противном случае, чтобы предоставить вам более конкретную информацию, вам необходимо предоставить логарифм, когда это произойдет.

7

для меня это происходило, когда у меня было: android.os.DeadObjectException в журналах. (Значение приложения уже умерло).

Проверьте, чтобы увидеть, если у вас есть что-то подобное в журналах:

I/ActivityManager( 600): Restarting because process died: ActivityRecord{439f9588 u0 com.mycompany.myapp/com.unity3d.player.UnityPlayerProxyActivity} 
W/ActivityManager( 600): Exception when starting activity com.mycompany.myapp/com.unity3d.player.UnityPlayerProxyActivity 
W/ActivityManager( 600): android.os.DeadObjectException 
W/ActivityManager( 600): at android.os.BinderProxy.transact(Native Method) 
W/ActivityManager( 600): at android.app.ApplicationThreadProxy.scheduleLaunchActivity(ApplicationThreadNative.java:759) 
W/ActivityManager( 600): at com.android.server.am.ActivityStack.realStartActivityLocked(ActivityStack.java:1120) 
W/ActivityManager( 600): at com.android.server.am.ActivityStack.startSpecificActivityLocked(ActivityStack.java:1247) 

... и если так оглянуться назад еще дальше в своих журналах, чтобы понять, почему вы приложение умирает. Для меня, чтобы приложение от смерти я должен был двигаться Намерение фильтры:

 <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

от UnityPlayerProxyActivity к UnityPlayerNativeActivity

+0

Перемещение этого фильтра намерения тоже работало на меня! Я понятия не имею, почему, но это к тому же! –

+0

Остерегайтесь - это сработало для меня, но перемещение фильтра намерений имело некоторые плохие последствия. Существующие пользователи моей игры потеряли значок, если они привязали его к своей домашней странице, а иногда (я не уверен в обстоятельствах) значок исчезнет совсем из пусковой установки. – tenpn

0

у вас проверить режим запуска на андроид манифеста и сделать значение, как этот андроид: launchMode = "singleTask"

Смежные вопросы