¿Unity cómo manejar el evento onTouch?
– UnityAssets3Free
bienvenido , soy juansito y hoy os traigo
esta unity pregunta
Agrego el objeto Button UI y agrego el script C# con función pública. Para el botón, agrego el componente Event Trigger, hago eventos (Clic con el puntero y el puntero hacia abajo) y redirijo a mi función public void onClick ()
En PC el código funciona, pero cuando cargo el juego a android y toca el objeto, el código no funciona.
¿Cómo hacer el evento onTouch?
3 respuestas 3
Creo que OnMouseDown verificará cada cuadro si hay una entrada del mouse, es como actualizar, por lo que debe tocar en la mejilla Actualizar y con el toque tendrá más control como Touch Phase para detectar si el toque comienza o se movió o se movió, etc. tienes que comprobar
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
Los toques no son clics
Para manejar la entrada táctil, debe verificar Input.touchCount
y luego refiérase a cada toque con Input.GetTouch
. Tenga en cuenta que cada Touch
tiene uno una identificación que será único por dedo y consistente en todos los fotogramas.
no hay fácil OnClick
como métodos para los toques, ya que los toques pueden ser mucho más complejos (toque, toque prolongado, arrastre, etc.), por lo que tendrá que verificar el interior Update()
y administre la conversión de datos táctiles a análogos de mouse usted mismo.
Puede usar los siguientes pasos para manejar eventos táctiles en su aplicación Unity3D.
-
Encender
Input.GetTouch
conseguir unTouch
estructura. -
Input.GetTouch
devuelve Touch para un toque de pantalla seleccionado (por ejemplo, con un dedo o un lápiz). Toque describe el toque de la pantalla. El argumento índice selecciona el toque de pantalla. -
Input.touchCount
da el número actual de toques de pantalla. siInput.touchCount
es mayor que cero, el índice GetTouch define qué toque de pantalla debe verificarse. Touch devuelve una estructura con los detalles táctiles de la pantalla. Cada toque adicional en la pantalla utiliza unInput.touchCount
. -
GetTouch
devuelve una estructura de anillo. Use cero para obtener el primer toque en la pantalla. Como ejemplo,Touch
incluye una posición en píxeles.
Por ejemplo:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
public GameObject projectile;
public GameObject clone;
void Update()
for (int i = 0; i < Input.touchCount; ++i)
if (Input.GetTouch(i).phase == TouchPhase.Began)
clone = Instantiate(projectile, transform.position, transform.rotation) as GameObject;
En este ejemplo, estamos tratando de instanciar un objeto al tocarlo.
También puede usar el siguiente modelo para manejar las interacciones táctiles.
void Update ()
// Handle native touch events
foreach (Touch touch in Input.touches)
HandleTouch(touch.fingerId, Camera.main.ScreenToWorldPoint(touch.position), touch.phase);
// Simulate touch events from mouse events
if (Input.touchCount == 0)
if (Input.GetMouseButtonDown(0) )
HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Began);
if (Input.GetMouseButton(0) )
HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Moved);
if (Input.GetMouseButtonUp(0) )
HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Ended);
private void HandleTouch(int touchFingerId, Vector3 touchPosition, TouchPhase touchPhase)
switch (touchPhase)
case TouchPhase.Began:
// TODO
break;
case TouchPhase.Moved:
// TODO
break;
case TouchPhase.Ended:
// TODO
break;
Para más: https://docs.unity3d.com/ScriptReference/Input.GetTouch.html
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
sin mas,espero que te funcione