Unity UGUI 拖拽跟随实现

unity 中拖拽某个UI移动时,例如是image类型的UI,要想实现图片跟随着鼠标移动需要以下操作:

首先我们要在鼠标按下时保存鼠标按下的位置,记录要移动物体的初始位置

 if(Input.GetMouseButtonDown(0))
        {


            vec3 = Input.mousePosition;
            pos = transform.GetComponent<RectTransform>().position;
     
        }

其次我们要在鼠标移动时求出鼠标的位移的偏移量是多少,这里用off来保存,ve3来刷新记录鼠标的移动位置

用pos加上每次帧鼠标的偏移量,最后在把pos获得的移动值赋值给要移动的物体
        if(Input.GetMouseButton(0))
        {
            Vector3 off = Input.mousePosition - vec3;
            vec3 = Input.mousePosition;
            pos = pos + off;
            transform.GetComponent<RectTransform>().position = pos;
        }

以上只是通过鼠标的状态来控制物体的移动。

我们还可以结合UI系统提供的事件来控制物体的移动

例如,我们给panel添加一个EventTrigger组件,分别添加Drag 和pointerDown两个事件

分别绑定触发的方法为MoveObject(),PointerDown();


public   void MoveObject()
    {
        Vector3 off = Input.mousePosition - vec3;
        vec3 = Input.mousePosition;
        pos = pos + off;
        transform.GetComponent<RectTransform>().position = pos;
 
    }
  public void PointerDown()
  {
      vec3 = Input.mousePosition;
      pos = transform.GetComponent<RectTransform>().position;
     
  }

猜你喜欢

转载自blog.csdn.net/qq_36848370/article/details/79926036
今日推荐