Recentemente mi è capitato di avere questo problema, lavorando ad un’app Unity mobile: un bottone all’interno di una scroll view non era selezionabile perché veniva rilevato l’evento drag invece di touch, anche cercando di essere molto precisi.

L’event system di Unity ha un parametro per gestire la sensibilità in pixel con cui far scattare un evento drag.

Il valore di default è 5px che su smartphone con uno schermo ad elevato numero di DPI fanno scattare l’evento troppo facilmente, bloccando di fatto l’evento click.

Cambiare il parametro manualmente non risolve il problema data la varietà di dispositivi presente sul mercato.

La soluzione è quella di creare uno script che imposta il parametro sulla base dei DPI del dispositivo. In questo modo l’impostazione diventa indipendente dalla risoluzione ed è possibile indicare la precisione con una lunghezza fisica.

Personalmente ho ottenuto buoni risultati utilizzando 1/10 di pollice ma il parametro è facilmente personalizzabile dall’inspector.