测试环境:Unity2021.2.7f1c1
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return super.onKeyDown(keyCode, event);
}
这个接口会无效。
网上百度到会搜到。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
//执行你退出逻辑
}
return true ;
}
return super.dispatchKeyEvent(event);
}
这dispatchKeyEvent其实就是捕获截取了一些安卓消息,上例子就是截取了KEYCODE_BACK(切后台)消息,并且event的Action是点击(ACTION_DOWN)以及Repeat次数是0次单击退出按钮。
当你实现了这个dispatchKeyEvent时,Unity生命周期的
这个接口就无效了。
总结:
1、Unity游戏应用,安卓活动onKeyDown接口无效,它被Unity实现的Input系统替代。
2、Unity游戏应用,实现安卓活动dispatchKeyEvent接口有效,并且该接口会替代Input系统的消息监听,让Input系统无法正常监听KeyCode.Escape消息。
3、建议不要使用安卓接口(onKeyDown和dispatchKeyEvent),建议使用Input系统去进行退出游戏逻辑。
4、【Unity Input系统】实现安卓系统退出按钮Unity可写如下行代码:
void Update()
{
if (Application.platform == RuntimePlatform.Android && Input.GetKeyUp(KeyCode.Escape))
{
}
}