我一直在尝试使用这个功能
RectTransformUtility.RectangleContainsScreenPoint()
与foreach循环相关,但我没有得到结果..
这是我的代码:
if (Input.touchCount > 0)
{
foreach (RectTransform rectt in content.GetComponentsInChildren<RectTransform>())
{
if (RectTransformUtility.RectangleContainsScreenPoint(rectt, Input.GetTouch(0).position, cam))
{
switch (Input.GetTouch(0).phase)
{
case TouchPhase.Began:
Debug.Log("BEGAN");
scroll.GetComponent<UnityEngine.UI.ScrollRect>().enabled = false;
break;
case TouchPhase.Ended:
Debug.Log("ENDED");
scroll.GetComponent<UnityEngine.UI.ScrollRect>().enabled = true;
break;
}
}
}
}
实际上滚动的东西就在那里,因为当触摸在数组的rectTransform内部时,我正在禁用scrollRect的滚动,或者至少这是我想做的事情。
该脚本附加到滚动视图的内容。
答案 0 :(得分:1)
我假设您使用的RectTransform是屏幕空间UI元素?在这种情况下,问题是UI元素没有与相机相关联,因此传递给函数的相机参数应为null:
if (RectTransformUtility.RectangleContainsScreenPoint(rectt, Input.GetTouch(0).position, null))
问题是文档中真的不清楚。看这里: http://fogbugz.unity3d.com/default.asp?660005_vnn982nkbubqr4qp
另外,请记住,为了使Input.GetTouch
能够正常工作,您必须拥有某种触摸输入设备,即它只能在真正的手机上或Unity Remote的编辑器中使用。