Обнаружение сенсорного события в Android Studio из экспортированной активности проекта Unity - PullRequest
0 голосов
/ 07 декабря 2018

Я объединил проект Unity и Android Studio, так что приложение открывает UnityPlayerActivity, когда пользователь нажимает кнопку в приложении, созданном в Android Studio, чтобы запустить 3D-игру.Все работает нормально, но теперь мне нужно определить, касается ли пользователь прикосновения к экрану, и вернуться к предыдущему действию (вне приложения 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) {

             }
         });

Но, похоже, ничего не работает.Итак, как я могу обнаружить касание в любом месте на UnityPlayerActivity, которое появилось, когда я экспортировал в Android Studio?

1 Ответ

0 голосов
/ 07 декабря 2018

Деятельность Unity находится на переднем плане, поэтому другие действия не получат никаких событий.

Вам нужно будет выйти из операции Unity, поэтому вы должны реализовать код для закрытия части Unity внутри приложения Unity.

Посмотрите на Input.GetKeyUp(KeyCode.Escape), чтобы узнать, когда была нажата кнопка возврата.Также на этот вопрос есть ответ, который может помочь вам взаимодействовать с действиями 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();
    }
 }
...