Unity, как обрабатывать событие onTouch?

Я добавляю UI объект Button и добавляю C # скрипт с публичной функцией. К кнопке я добавляю компонент Event Trigger, делаю события (Pointer Click и Pointer Down) и перенаправляю на мою функцию public void onClick ()

На ПК код работает, но когда я загружаю игру на Android и касаюсь объекта, код не работает.

Как сделать событие onTouch?


person Cognizer    schedule 31.05.2019    source источник


Ответы (2)


Я думаю, что OnMouseDown будет проверять каждый кадр, есть ли ввод с помощью мыши, это похоже на обновление, поэтому вам нужно прикоснуться к щеке в Обновлении, и с прикосновением у вас будет больше контроля, например Touch Phase, чтобы определить, начинается ли касание, поднимается или перемещается и т. Д. Вы Нужно проверить

 if(input.touchCount > 0)

void Update() {
     if (Input.touchCount > 0){
         print("exist a touch");

             if(Input.GetTouch(0).phase == TouchPhase.Began){
                 print("Touch begans");
             }
             if(Input.GetTouch(0).phase == TouchPhase.Ended){
                 print("Touch Ended");
             }
      }
    }

chCount > 0)& inside this you can cheek for touch Phase
person Saleh Bayat    schedule 02.06.2019

Прикосновения - это не клики

Чтобы обрабатывать сенсорный ввод, вам необходимо проверить Input.touchCount, а затем запрашивать каждое касание с помощью Input.GetTouch. Обратите внимание, что каждый Touch имеет идентификатор, который будет уникальным для каждого пальца и согласованным по кадрам.

Не существует простых OnClick подобных методов для прикосновений, поскольку прикосновения могут быть намного более сложными (касание, долгое касание, перетаскивание и т. Д.), Поэтому вам придется заглядывать внутрь Update() и самостоятельно обрабатывать преобразование данных касания в аналоги мыши.

person Draco18s no longer trusts SE    schedule 31.05.2019
comment
Как я могу с помощью Touch определить, на каком GameObject или элементе пользовательского интерфейса щелкнул, переместился? - person Cognizer; 01.06.2019
comment
@Cognizer Physics.Raycast для GameObjects. Элементы пользовательского интерфейса Canvas уже настроены для обработки касаний. - person Draco18s no longer trusts SE; 01.06.2019