Фиксим Unity Scroll Drag Threshold

При разработке одного приложения появился странный баг со скроллом на мобилках: кнопки внутри скролла не хотели нажиматься.

Решение оказалось простым и элегантным, которое можно оформить в маленький скрипт:
//
// Coded by afrokick 2016
// https://devby.ru/afrokick/2016/05/11/fiksim-unity-scroll-drag-threshold.html
//
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

/// <summary>
/// Use it in new unity UI system for fix drag threshold in different scale factor.
/// </summary>
public class DragThresholdFixer : MonoBehaviour
{
	[SerializeField]
	private EventSystem myEventSystem;

	[SerializeField]
	private Canvas myCanvas;

	[SerializeField]
	private float pixelDragThreshold = 5;

	// Use this for initialization
	void Awake()
	{
		myEventSystem.pixelDragThreshold = (int)(pixelDragThreshold * myCanvas.scaleFactor);
	}
}


Дело в том, что программа думала, что я хочу скролить, поэтому не давала сработать обработчику нажатия на кнопку. С помощью скрипта можно указать, насколько чувствительным должен быть скролл. Чем больше значение переменной pixelDragThreshold, тем лечге нажать и тем большее движение свайпа нужно сделать, чтобы начать скролить.

Удачи!

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.