Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 手机游戏在使用应用程序时重新启动。退出_Unity3d_Quit - Fatal编程技术网

Unity3d 手机游戏在使用应用程序时重新启动。退出

Unity3d 手机游戏在使用应用程序时重新启动。退出,unity3d,quit,Unity3d,Quit,好的,我把我以前的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): (Filenam

好的,我把我以前的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):
GameController脚本中的退出代码非常简单:

public void Quit () {
    Application.Quit();
}
void OnApplicationQuit () {
    if (showAds) { //just in case
        adController.DestroyAll();
    }
}

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

所以,它都回到了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>

然后将
移动到UnityPlayerPractivity:

  <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>

现在应用程序。退出()没有问题

完成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>

@Prisoner6 aswer不适用于我,但作为参考,另一个选项是隐藏应用程序(将其移到后面)。这增加了一个附加值,即如果Android决定值得将应用程序保留在内存中,那么您将避免加载一个应用程序,这将改善用户体验。这可以作为一个插件处理,但嘿,没有必要这样做!非常简单的C代码:

AndroidJavaClass jc=新的AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject jo=jc.GetStatic(“currentActivity”);
var movedToBack=jo.Call(“moveTaskToBack”,true);

Application.Quit()
交换该代码,您就完成了。

我收到了相同的错误,但对我来说不起作用。您可以将整个AndroidManifest.xml作为参考吗?很遗憾,它不起作用。哦,好吧。我找到了一个解决办法,看看我的答案。它很有效。只需正确移动元素“意图过滤器”
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    var movedToBack = jo.Call<bool>("moveTaskToBack", true);