我结合了一个 Unity 和 Android Studio 项目,这样当用户按下 Android Studio 制作的应用中的按钮以启动 3D 游戏时,该应用会打开一个 UnityPlayerActivity。 一切正常,但现在我需要检测用户是否触摸了屏幕,然后返回到之前的 Activity (在 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 上的任何位置的触摸?
最佳答案
Unity Activity 在前台,因此其他 Activity 不会收到任何事件。
您将需要退出 unity Activity ,因此您应该在 unity 应用程序内实现关闭 Unity 部分的代码。
查看 Input.GetKeyUp(KeyCode.Escape)
以了解何时按下后退按钮。
还有 this question有一个答案可以帮助您与 Android Activity 进行交互而不是关闭所有内容(我在此处复制相关代码以防链接断开)
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();
}
}
关于android - 从导出的统一项目 Activity 中检测 Android Studio 中的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53661154/