使用Application.Quit时手机游戏重新启动

the*_*er6 5 quit unity-game-engine

好的,所以我将旧的 4.6 Unity 项目升级到 Unity 5.0。总的来说,这个过程相对轻松,但现在当我为 Android 构建时,我的“退出”按钮不起作用。

我通过 logcat 收到一条非常奇怪的消息:

E/Unity   (23691): RenderTexture warning: Destroying active render texture. Switching to main context.
E/Unity   (23691):
E/Unity   (23691): (Filename:  Line: 295)
E/Unity   (23691):
Run Code Online (Sandbox Code Playgroud)

我的 GameController 脚本中的退出代码非常简单:

public void Quit () {
    Application.Quit();
}
void OnApplicationQuit () {
    if (showAds) { //just in case
        adController.DestroyAll();
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该寻找什么?是质感问题吗?我确实有一个自定义着色器,但游戏之前在 Unity 4.6 上运行得很好。

the*_*er6 3

所以,这一切都回到了 Unity5 以及它如何集成 Admob 等旧插件。显然,Android 构建不再需要 ProxyActivity。因此,我从AndroidManifest.xml文件中完全删除了以下内容:

<activity android:name="com.unity3d.player.UnityPlayerProxyActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" >
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

然后将其移至<intent-filter>UnityPlayerActivity 中:

  <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" >
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

现在Application.Quit()工作没问题了!

完整的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.example.admobtest" android:versionName="1.0" android:versionCode="1">
  <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
  <!-- Mobile Ads Permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false">
    <!-- meta-data tag for Google Play services -->
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" >
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
      <meta-data android:name="android.app.lib_name" android:value="unity" />
    </activity>
    <activity android:name="com.unity3d.player.VideoPlayer" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" >
    </activity>
    <!-- Google Mobile Ads Activity -->
    <activity android:name="com.google.android.gms.ads.AdActivity"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.Translucent"
              android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    </activity>
    <!-- PurpleBrain AdBuddiz Activity -->
    <activity android:name="com.purplebrain.adbuddiz.sdk.AdBuddizActivity"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.Translucent">
    </activity>
  </application>
  <uses-feature android:glEsVersion="0x00020000" />
  <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19" />
</manifest>
Run Code Online (Sandbox Code Playgroud)