这是我的想法:我想要一个滚动视图,用户可以在其中滚动组件,和点击它。
经过数小时的测试/搜索,我终于设法使用以下代码。
我的问题在于比较Math.Abs(eventData.delta.x) > 1.0f
。我认为如果鼠标“移动超过1.0f
”则会拖动,否则我认为这是一次点击。
值 1.0f
可以完美地在所有设备上使用鼠标=轻松 不 移动,以及大屏幕(平板电脑),当你点击。但是在智能手机上,即我的Galaxy S6或我试过的其他3款手机,它非常敏感,几乎不可能点击。
你怎么能以编程方式处理这个?是否有DPI或其他事项需要考虑并基于此,将我的 1.0f
乘以决议?
public class BoardHandler : EventTrigger
{
private static GameObject _itemDragged;
private static bool _isDragging;
private static ScrollRect _scrollRect;
public override void OnPointerClick(PointerEventData data)
{
if (_isDragging) {
return;
}
Debug.Log("Click");
}
public override void OnBeginDrag(PointerEventData eventData)
{
if (Math.Abs(eventData.delta.x) > 1.0f ||
Math.Abs(eventData.delta.y) > 1.0f) {
_scrollRect.OnBeginDrag(eventData);
_isDragging = true;
}
}
public override void OnDrag(PointerEventData eventData)
{
if (_isDragging) {
_scrollRect.OnDrag(eventData);
}
}
public override void OnEndDrag(PointerEventData eventData)
{
if (!_isDragging) {
return;
}
_scrollRect.OnEndDrag(eventData);
_isDragging = false;
}
private void Start()
{
_scrollRect = GetComponentInParent<ScrollRect>();
}
}
答案 0 :(得分:0)
我过去曾使用过TouchScript来覆盖一个项目中的多个设备,例如从9个屏幕6k屏幕阵列到平板电脑。他们有一组实用程序来处理多个分辨率和dpi。
查看TouchManagerInstance中的UpdateResolution方法。
第h