NGUI拖动DragDrop

拖动的实现

如果实现一个UI的可以拖动,只要在需要拖动的UI元素上添加上BoxCollider和UIDragAndDopItem便可以实现拖动。

如何处理拖动和释放

如果对拖动过程进行操作,那我们就需要新建类,并集成UIDragDropItem类,在新类中通过重写相应的方法来实现。

在我们拖动过程中到底发生了什么事情,有哪些方法被调用了呢?

下面是拖动过程中调用的方法,按实际顺序排列(标红项重要)
* OnPress(bool isPressed) 拖动对象是否被按下,按下为true,松开为false
OnDragDropStart 拖动释放开始
* StartDraging 拖动开始
* OnDragStart() 开始拖动
OnDragDropMove(Vector2 delta) 拖动释放操作移动
* OnDrag(Vector2 delta) 拖动中
* OnDragDropEnd() 拖动释放结束
OnDragDropRelease(GameObject surface) 拖动物体被释放 
* OnDragEnd() 拖动结束
* OnPress(bool isPress)

OnDragDropRelease(GameObject surface)
使用此方法可以对鼠标松开那一刻进行处理

拖动案例一

松开鼠标时,如果松开是,与影子重合,及设置花与影子在同一位置,此时shadow和flower都有BoxCollider,flower有MyDragItem(代码如下)

using UnityEngine;
using System.Collections;
public class MyDragItem : UIDragDropItem {
    protected override void OnDragDropRelease(GameObject surface)
    {
        base.OnDragDropRelease(surface);
        //如果释放拖拽物体下面UI有碰撞体,并且名称为shadow,则将拖动的物体与shadow位置设为一样
        if (surface!=null && surface.name=="shadow")
        {
            this.transform.localPosition = surface.transform.localPosition;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

拖动案例二

在上一个案例的基础上,为shadow添加DragDropContainer组件,花添加DragDropItem组件,花会自动进入到Shadow游戏对象中去(可以不用编写任何代码)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值