从导出的统一项目活动中检测Android Studio中的触摸事件

时间:2018-12-06 23:21:16

标签: android unity3d onclick onclicklistener ontouchevent

我已经合并了Unity和Android Studio项目,以便用户在Android Studio中制作的应用程序中按一个按钮来启动3D游戏时,该应用程序打开UnityPlayerActivity。 一切正常,但是现在我需要检测用户是否触摸屏幕,然后返回到上一个活动(在Unity应用程序之外)。

我看过:

@Override public boolean onTouchEvent(MotionEvent event)
{
   return mUnityPlayer.injectEvent(event);
}

`并试图从那里检测到触摸,但是没有运气。我也尝试过:

@Override public boolean onKeyDown(int keyCode, KeyEvent event)
    {

        if (keyCode == KeyEvent.ACTION_DOWN) {

        } 
}

@Override public boolean dispatchKeyEvent(KeyEvent event)
    {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {

    }
}

我最后一次尝试是:

mUnityPlayer.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {

             }
         });

但是似乎没有任何效果。那么,当我导出到Android Studio时,如何在UnityPlayerActivity上的任何地方检测到触摸?

1 个答案:

答案 0 :(得分:1)

Unity活动处于前台,因此其他活动将不会收到任何事件。

您将需要退出unity活动,因此您应该实现代码以关闭unity应用程序中的Unity部分。

查看Input.GetKeyUp(KeyCode.Escape)知道何时按下后退按钮。 this question的答案也可以帮助您与Android活动进行交互,而不是关闭所有内容(如果链接断开,我会在此处复制相关代码)

if (Input.GetKeyUp(KeyCode.Escape))
{
    if (Application.platform == RuntimePlatform.Android)
    {
        AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
        activity.Call<bool>("moveTaskToBack", true);
    }
    else
    {
         Application.Quit();
    }
 }