C# 有没有办法在unity 3d中拖放UI按钮?

C# 有没有办法在unity 3d中拖放UI按钮?,c#,unity3d,C#,Unity3d,有没有办法在unity 3d中拖放UI按钮 我可以给一个按钮添加两个功能吗? 第一次正常单击时,它会执行某些操作。 第二次单击并按住时,可以将其拖放到屏幕上的其他位置 这是我到目前为止的代码,但它在按钮上不起作用 void Update() { if (isDragged) { transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);

有没有办法在unity 3d中拖放UI按钮

我可以给一个按钮添加两个功能吗? 第一次正常单击时,它会执行某些操作。 第二次单击并按住时,可以将其拖放到屏幕上的其他位置

这是我到目前为止的代码,但它在按钮上不起作用

    void Update()
    {
        if (isDragged)
        {
            transform.position =  Camera.main.ScreenToWorldPoint(Input.mousePosition);
        }
    }

    public void OnMouseOver()
    {
        if (Input.GetMouseButtonDown(0))
        {
            isDragged = true;
        }

        
    }
    public void OnMouseUp()
    {
        isDragged = false;
    }

您可以使用unity内置接口

使用
IPointerClickHandler
在单击时执行某些操作,并实现另外三个处理拖动的界面,即
IBeginDragHandler
IDragHandler
IENDraghandler

public class Example : MonoBehaviour, IPointerClickHandler, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    //Detect if a click occurs
    public void OnPointerClick(PointerEventData pointerEventData)
    {
        Debug.Log(name + " Game Object Clicked!");
    }

    public void OnBeginDrag(PointerEventData eventData)
    {

    }

    public void OnDrag(PointerEventData data)
    {

    }

    public void OnEndDrag(PointerEventData eventData)
    {

    }
}
参考资料: