一:使用 Application.Quit()

public void Update() {  

if(Input.GetKeyDown(KeyCode.Escape))
Application.Quit();
}

如此,Unity 就能响应 Android 的 Back 按钮了。

但是!这个方法存在的问题是,退出当前 UnityPlayerActivity 的同时,会退出整个程序。因此对于想返回上一个 Activity 并不有效。

二:添加一个后退的 button 执行 mUnityPlayer.quit()

在 UnityPlayerActivity 类,存在 mUnityPlayer.quit() 方法,通过退出 unityplayer 来结束 UnityPlayerActivity。 于是就考虑在安卓端设置一个后退按钮如图:

设置该按钮的监听并执行 mUnityPlayer.quit():

bckbtn = (Button) findViewById(R.id.navigate_back);
bckbtn.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
mUnityPlayer.quit();
}
});

这样就能退出当前的 UnityPlayerActivity 并返回前一个 Activity 。

三:使用 Unity 调用 Android 响应 Back 按钮

为了最终实现响应手机的系统按键返回前一个 Activity,在这使用到了 Unity 和 Android 的交互,通过 Unity 中的脚本响应系统按键,再调用 Android 函数实现返回上一个Activity。关于 Unity 调用 Android 的函数,可参考:http://www.xuanyusong.com/archives/667 。

在此,首先在 Unity 的 C# 脚本中添加如下代码响应 Back 按钮:

if (Input.GetKeyUp (KeyCode.Escape)) {
AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");
jo.Call ("onBackPressed");
}

在此先得到 AndroidJavaClass ,然后得到 AndroidjavaObject 就是当前 UnityPlayerActivity 的对象,拿到它的对象后调用jo.Call()参数表示调用 UnityPlayerActivity 类中的方法名称。
于是在 UnityPlayerActivity 下实现上面的 onBackPressed() 方法,并在该方法中实现 mUnityPlayer.quit(),那么问题就搞定了,Android 端 java 代码如下:

@Override
public void onBackPressed() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mUnityPlayer.quit();
}
});
super.onBackPressed();
}

这里重写了系统的 onBackPressed() 函数。

就此,最终实现了 Unity 响应手机的系统返回键,成功返回上一级 Activity。

Unity响应Android的返回键,退出当前Activity的更多相关文章

  1. Android双击返回键退出Activity的两种方法

    在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记 ...

  2. Android监听返回键、Home键+再按一次返回键退出应用

    Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...

  3. Android 应用按两下返回键退出应用程序

    在android应用开发中,有时候应用会用到按两下返回键退出应用的功能,今天介绍一下这个功能,直接上代码: @Override public boolean dispatchKeyEvent(KeyE ...

  4. 关于android app两次点击返回键退出的处理

    现在的android app在开发时,引入了两次点击返回键退出app的设计 为了避免用户误触,这个设计很人性化 中文网上社区有些同学贴了一些实现的例子,我觉得不是很好 代码如下 public bool ...

  5. React Native 适配Android物理返回键,实现连续两次点击退出

    一直使用iPhone作为测试机开发,提交给测试同事Android版本后发现很多适配问题,其中一个非常明显的是,弹出一个modal后,点击Android的返回键,modal不会消失,直接navigati ...

  6. android双击返回键退出程序

    今天给大家简单说一下,android双击返回键退出程序. @Override public boolean onKeyDown(int keyCode, KeyEvent event) {      ...

  7. ionic中android的返回键

    ionic中android的返回键 在ionic框架中已经注册了几个返回事件,分别是 view sideMenu modal actionSheet popup loading 他们的优先级分别是 v ...

  8. ionic 实现双击返回键退出应用功能

    ionic 实现双击返回键退出应用功能 keywords cordova,ngcordova,phonegap,ionic,双击,返回键,退出 例子 准备Toast插件,提示用,用户体验好点,不是必须 ...

  9. 点击返回键退出popupwindow的方法

    点击返回键退出popupwindow mPopupWindow.setFocusable(true); 这句非常重要,对背景不会有影响 mPopupWindow.setBackgroundDrawab ...

随机推荐

  1. java实现Haffman编码

    1.先创建一个树节点类(泛型类),为了方便使用集合的排序方法,泛型类要实现泛型接口Comparable,代码如下 package com.hjp.huffman; /** * Created by J ...

  2. Debian 8安装ibus输入法

    # apt-get install ibus ibus-sunpinyin ibus-table-wubi

  3. CentOS 7学习手册

    CentOS 7与之前版本有较大变动,查阅资料,整理得到如下手册(未完~). 一.安装 1.使用哪种方式安装 (1).虚拟机安装,推荐:VM,功能齐全,强大(Virtual Box也可以). (2). ...

  4. Yii2 使用八 使用scenarios

    在model里定义 public function scenarios() { return [ 'add' => ['title', 'content'], ]; } 在rules里定义 [[ ...

  5. php函数mt_rand和rand 速度测试

    今天在写代码时,看到以前的同时写了一个取随机数,用到了mt_rand(2,19) 就顺手搜了一下,mt_rand和rand的区别. 先看官方的解释 mt_rand 和 rand mt_rand — 生 ...

  6. CF467D Fedor and Essay 建图DFS

      Codeforces Round #267 (Div. 2) CF#267D D - Fedor and Essay D. Fedor and Essay time limit per test ...

  7. php各种编码集详解和以及在什么情况下进行使用

    字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等. 字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集.GB2312字符集.B ...

  8. RTX二次开发(二)(基于ASP.NET)

    上一篇,我们讲到我开发环境的配置,还没配置好开发环境或再看一遍开发环境配置?接下来,我们开始coding...... 在coding之前,我们先添加引用. 我们在SDK的安装目录中引用这个文件. 引用 ...

  9. $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别

     1.首先说JQuery的几个写法  $(function(){     //do someting   });   $(document).ready(function(){     //do so ...

  10. 【Solr】数据库数据导入索引库

    目录 分析框图 配置数据库与solrconfig.xml 回到顶部 分析框图 框图画的粗糙!勿喷啊!勿喷啊! 回到顶部 配置数据库与solrconfig.xml Dataimport插件 可以批量把数 ...