如何钳制UI在统一值之间的拖动



这是我尝试过的。

public void OnDrag(PointerEventData eventData)
{
float x;
float y;
rectTransform.anchoredPosition += eventData.delta;
if (Background.transform.position.x >= xMaxBounds)
{
x = xMaxBounds;
}
else if (Background.transform.position.x < xMinBounds)
{
x = xMinBounds;
}
else
{
x=rectTransform.position.x;
}
if (Background.transform.position.y > yMaxBounds)
{
y = yMaxBounds;
}
else if (Background.transform.position.y < yMinBounds)
{
y = yMinBounds;
}
else
{
y = rectTransform.position.y;
}
rectTransform.position = new Vector3(x, y, rectTransform.position.z);

}

它会锁定屏幕。我知道下面的工作原理,但允许我将对象拖离屏幕。我想夹住它,这样它就不会从屏幕的侧面移开。这就像一个从上到下看的虚拟桌面,我不想把那个桌子对象从屏幕上弄丢。

public void OnDrag(PointerEventData eventData)
{
rectTransform.anchoredPosition += eventData.delta;
}

如果有任何帮助,我们将不胜感激。上周,我一直在使用这个代码,尝试我在网上找到的各种各样的建议,但我没有发现与我的问题完全相同的问题。所以是时候问我的问题了,因为其他类似的解决方案对我没有帮助

好的,经过大量的浏览和修补,我得到了这个工作的

public void OnDrag(PointerEventData eventData)
{
float DragXPosition = (rectTransform.anchoredPosition.x + eventData.delta.x) / canvas.scaleFactor;
float DragYPosition = (rectTransform.anchoredPosition.y + eventData.delta.y) / canvas.scaleFactor;
if (DragXPosition <= xMinBounds)
{
DragXPosition = xMinBounds;
}
if (DragXPosition >= xMaxBounds)
{
DragXPosition = xMaxBounds;
}
if (DragYPosition <= yMinBounds)
{
DragYPosition = yMinBounds;
}
if (DragYPosition >= yMaxBounds)
{
DragYPosition = yMaxBounds;
}
rectTransform.anchoredPosition = new Vector2(DragXPosition, DragYPosition);
}

相关内容

  • 没有找到相关文章

最新更新