【发布时间】:2017-07-25 13:59:23
【问题描述】:
我目前正在做一个小项目来学习 Unity,但我一直在做一个无限滚动的 ScrollRect。我得到了从掩码中生成/回收对象的想法,并添加正确的操作并注册,并根据内容面板的移动方向将新的操作设置为内容面板的最后一个或第一个兄弟,但是有是一个小问题。当我在那个内容面板上有 100 多个对象时,不能指望我把内容面板做得很长,这样我就可以滚动很长时间。我需要的是无限滚动一个小的(仍然大于掩码)面板。我该怎么做?
我目前正在使用 normalizedPosition,并滚动回面板顶部(或底部,根据我前进的方向),这就是我的 OnDrag 方法的样子;
public void OnDrag(PointerEventData eventData)
{
if (transform.GetComponent<ScrollRect>().verticalNormalizedPosition < 0.15f)
{
transform.GetComponent<ScrollRect>().verticalNormalizedPosition = 0.88f;
}
if (transform.GetComponent<ScrollRect>().verticalNormalizedPosition > 0.90f)
{
transform.GetComponent<ScrollRect>().verticalNormalizedPosition = 0.17f;
}
}
顺便说一下,如果需要任何相关信息,我的班级正在实施 IDragHandler。
【问题讨论】:
-
如果滚动速度非常快并且从 0.89 的垂直位置转到 0.99 怎么办?你不应该把它硬拉到 0.17,你应该加或减一个值。
-
我不滚动,而是只让拖动工作。我已经实现了 IScrollHandler 以“吞噬”该动作。拖拽的时候,没看懂你说的“加”是什么意思,但是我会尝试在垂直归一化位置为0.99的时候加0.02,希望能回滚。
标签: c# user-interface unity3d