Unity 拖拽UGUI窗口

31 篇文章 1 订阅
这篇博客详细介绍了在Unity中实现UI元素拖放功能的代码实现,包括使用IBeginDragHandler、IDragHandler、IEndDragHandler接口,以及处理拖拽过程中的位置更新和偏移量计算。
摘要由CSDN通过智能技术生成
using UnityEngine;
using UnityEngine.EventSystems;

/// <summary>
/// UI拖拽
/// </summary>
public class DragUI : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    /// <summary>
    /// 拖拽对象  
    /// </summary>
    public Transform _Target;//可拖拽区域

    /// <summary>
    /// 拖拽对象RectTransform
    /// </summary>
    public RectTransform _TargetRect;//整个窗口

    private bool isDrag;

    private Vector3 offset;

    public void OnBeginDrag(PointerEventData eventData)
    {
        isDrag = false;
        SetDragObjPostion(eventData);
        _TargetRect.transform.SetSiblingIndex(1);
    }

    public void OnDrag(PointerEventData eventData)
    {
        isDrag = true;
        SetDragObjPostion(eventData);
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        SetDragObjPostion(eventData);
    }

    void SetDragObjPostion(PointerEventData eventData)
    {

        Vector3 mouseWorldPosition;

        //判断是否点到UI图片上的时候
        if (RectTransformUtility.ScreenPointToWorldPointInRectangle(_TargetRect, eventData.position, eventData.pressEventCamera, out mouseWorldPosition))
        {
            if (isDrag)
            {
                _TargetRect.position = mouseWorldPosition + offset;
            }
            else
            {
                //计算偏移量
                offset = _TargetRect.position - mouseWorldPosition;
            }
        }
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity UGUIUnity引擎的用户图形界面系统,可以用于创建和呈现2D图形。使用Unity UGUI,我们可以创建各种自定义的UI元素,包括按钮、文本框、图像和面板等。 在Unity UGUI中,绘制图形可以通过Image组件实现。Image组件具有显示图像的功能,并且可以设置图像的颜色、透明度和填充模式等属性。要绘制图形,我们可以调整Image组件的属性,如Sprite、Color和Fill Amount。 首先,我们需要导入一个图像资源作为绘制的内容。可以通过将图像资源拖拽Unity场景窗口或项目视图中来导入图像资源。然后,将图像资源拖放到需要绘制图形的UI元素上,如Image组件。 接下来,我们可以调整Image组件的属性来绘制出所需的图形。例如,通过设置Color属性可以改变图形的颜色和透明度。通过调整Fill Amount属性可以改变图形的填充的比例,可以实现例如进度条的效果。 此外,Unity UGUI还提供了许多其他的绘图组件和功能,如Text组件可以绘制文本,Raw Image组件可以显示原始图像,Slider组件可以制作滑块等。 在编写脚本时,我们可以通过调用Image组件的公共方法和属性来动态地控制图形的绘制。例如,可以使用代码来改变Image组件的Color属性,实现图形的渐变效果。还可以使用代码来使图形根据用户输入动态更新,以实现交互性。 总而言之,Unity UGUI提供了强大的绘图功能,可供开发者用于创建和呈现2D图形。它可以通过设置属性或使用脚本来实现图形的绘制和动画效果,非常灵活和方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值