Unity移动滚动太敏感

时间:2016-05-23 19:01:39

标签: c# unity3d unity5

我最近决定使用Unity 5制作2D手机游戏。 现在我有一个滚动问题。它是移动敏感的方式。在Windows上我的按钮在scrollcontent工作完美。但是在我的手机上我很难按下滚动条中的按钮。我认为这是因为滚动在触摸结束之前滚动,因此它记录为拖动,而不是触摸。

我试图在互联网上搜索这个问题,但似乎是一个应该修复的2-3岁问题。

我希望有人能解决我的问题,

感谢。

3 个答案:

答案 0 :(得分:3)

如果ScrollRect在移动设备上过于敏感,那么您必须在移动设备上更改ScrollRect的属性,例如scrollSensitivityelasticitydecelerationRate设备。您检测到app是否在移动设备上运行,然后您更改了值。下面的代码应该这样做。您可能需要根据需要更改值。

void Start()
{
  if (Application.isMobilePlatform)
  {
      ScrollRect scrolRect = GameObject.Find("GameObjectScrollRectIsAttachedTo").GetComponent<ScrollRect>();
      scrolRect.scrollSensitivity = 0.5f;
      scrolRect.elasticity = 0.05f;
      scrolRect.decelerationRate = 0.2f;
  }
}

enter image description here

答案 1 :(得分:1)

好的,我找到了解决问题的答案。在阅读了一些论坛后,我来到了添加事件系统的解决方案。在事件系统中,我能够修改阈值,这就是诀窍。

答案 2 :(得分:1)

这里实际遇到的问题是如何在极少的拖动力下阻止滚动视图滚动。这在移动设备上尤其令人讨厌,尤其是在滚动视图中有按钮的情况下,因为拖动将取消按钮的单击。 无需在脚本中添加阈值,因为事件系统已经具有拖动阈值。将其更改为更高的值以降低灵敏度。

一个更好的移动解决方案是从屏幕上获取dpi

GetComponent<EventSystem>().pixelDragThreshold = baseThreshold*Screen.dpi/baseDPI

,然后根据该值将事件系统拖动阈值设置为某个值。