【NGUI】扩展NGUI例子实现拖动交换位置功能
来源:互联网 发布:天蝎网络第三季 百度 编辑:程序博客网 时间:2024/06/05 19:15
大家在学习NGUI的时候有接触过这个例子吧?
图1 Example 11 - Drag & Drop
这个例子已经很全面的实现了拖动物体和放下物体到某处(3D或2D),为了更深入的理解这个例子,我们现在来学习并扩展这个例子。
- 需求:有六张卡牌,拖动任意一张卡牌到相应的另一张卡牌位置上,可以自动进行两张卡牌的位置调换。
- 分析:通过这个例子,我们虽然可以拖出物体放置到另一个地方,但是不会和任何物体位置调换,所以我们要适当的扩展相应的代码。
- 思路:根据需求,首先我们需要有六张卡牌在Grid下,并且是按一定的编号顺序排列好的,存放在一个List中。然后拖动其中任意一张卡牌到任意位置,如果碰撞器没有Trigger到其他牌,则按原来的List排序顺序排序。反之Trigger到了其他牌,则交换他们的编号,重新排序List,就可以实现交换的效果了。
- 实现:
首先Copy一份UIGrid.cs的代码,重命名为XUIGrid.cs,我们自定义三个参数,分别为:
在Init()方法中初始化listData的数据:
新增一个可以处理交换位置的Sort方法,供每次重新排序时调用,即GetChildList()方法:
交换完成后我们还要保证listData中存储最新的排序方式,不然下次再交换会导致交换不正确。在ResetPosition()方法的末尾加上如下代码:
SavePos()方法:
这里我们的XUIGrid已经实现得差不多了,现在我们修改一下UIDragDropItem.cs,我们也Copy一份出来,重命名为XUIDragDropItem.cs
首先,我们要获取当前拖动的卡牌编号,即在OnDragDropStart()方法中给XUIGrid的dragName赋值:
然后,在OnDragDropRelease()中调用XUIGrid的repositionNow=true
最后,就是OnTriggerEnter方法的处理,把当前卡牌和目标卡牌编号传递给XUIGrid。
下面来看看测试效果~
本例子实例项目下载地址:http://download.csdn.net/detail/yangyy753/8696945
Ricky Yang个人原创,版权所有。转载地址:http://blog.csdn.net/yangyy753/article/details/45698785
- 【NGUI】扩展NGUI例子实现拖动交换位置功能
- 【NGUI】扩展NGUI例子实现拖动交换位置功能
- NGUI带位置图标的拖动例子
- NGUI拖动摄像机实现面板上下拖动
- Unity NGUI 实现 拖动面板选项
- NGUI-Sprite扩展镜像功能
- NGUI背包物品添加功能实现
- 【Unity】代码实现NGUI按钮监听功能
- 【Unity】用NGUI实现摇杆功能
- 【NGUI】UIPlayTween实现菜单栏伸缩功能
- 【NGUI】实现淡入淡出提示框功能
- UGUI实现NGUI的UIEventListener功能
- Unity基于NGUI实现拖拽功能
- Unity3D使用NGUI实现简单背包功能
- 【Unity&Shader】NGUI实现图集变灰功能
- NGUI
- NGUI
- NGUI
- 数人云|项目管理多重要,看完本文就知道(程序员,项目经理必看)
- 八皇后问题(经典回溯算法)
- 用css和jQuery实现简单的购物车功能
- 2017hdu新生赛 1008 友好整数
- ELK初探
- 【NGUI】扩展NGUI例子实现拖动交换位置功能
- 获取数据库其中某个表的结构
- leetcode 141-Linked List Cycle
- layui.layer 弹层组件文档
- 学习Javascript 的书籍有哪些?
- mysql死锁问题分析
- springmvc定时器详解
- VNC轻松连接远程Linux桌面
- Java基础语法之逻辑控制