At first, we can use Input.GetKeyDown(KeyCode.Escape) to detect the back button input. I wrote the code inside update function:
// We also can write it in FixedUpdate function or whatever . The point is we want to check if the user press the back button
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
// Do your code here . . .
}
}
Now we want to execute what happens if user press the back button. Here is the common situation:
1. Quit the application
2. Go back to menu screen
1. Quit the application
This is pretty straight forward. We can simply call Application.Quit();
2. Go back to menu screen
This is common if you want to build game for android. You can call the android native code to do this. Add a macro to make sure you run it in android.
// Inside "Do your code here . . ."
#if UNITY_ANDROID
// Get the unity player activity
AndroidJavaObject activity =
new AndroidJavaClass("com.unity3d.player.UnityPlayer")
.GetStatic<AndroidJavaObject>("currentActivity");
// call activity's boolean moveTaskToBack(boolean nonRoot) function
// documentation:
http://developer.android.com/reference/android/app/Activity.html#moveTaskToBack(boolean)
http://developer.android.com/reference/android/app/Activity.html#moveTaskToBack(boolean)
activity.Call<bool>("moveTaskToBack", true);
#endif
activity.Call<bool>("moveTaskToBack", true); The method signature is it takes parameter boolean and it returns boolean. So our call function signature must match the moveTaskToBack signature.
activity.Call<bool>("moveTaskToBack", true); The method signature is it takes parameter boolean and it returns boolean. So our call function signature must match the moveTaskToBack signature.