Unity3d 手机游戏在使用应用程序时重新启动。退出
好的,我把我以前的4.6 Unity项目升级到Unity 5.0。总的来说,这个过程相对来说比较轻松,但现在当我为Android构建时,我的退出按钮不起作用 我通过logcat收到一条非常奇怪的信息: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
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);