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;
}