我已经合并了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上的任何地方检测到触摸?
答案 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();
}
}