NGUI 自定义 Drag Item Script
最近要实现一个NGUI效果。
查看了一下,NGUI有个自带 UIDragDropItem.cs 的组件进过修改后即可以实现。
下面贴上UI布局,代码:
mDragDropItem.cs
using UnityEngine;
using System;
using System.Collections; public class mDragDropItem : UIDragDropItem
{
public BingZhong_Id bingzhong_id; protected override void OnDragDropStart()
{
base.OnDragDropStart(); ///一旦被克隆,克隆体设置新的参数
///表示 克隆体移动 是直接移动本体
if (this.cloneOnDrag)
{
this.cloneOnDrag = false;
this.restriction = Restriction.None;
Destroy(GetComponent<UIDragScrollView>());
}
} protected override void OnDragDropRelease(GameObject surface)
{
// Is there a droppable container?
UIDragDropContainer container = surface ? NGUITools.FindInParents<UIDragDropContainer>(surface) : null; //检测到容器
if (container != null)
{
//clear child
foreach (Transform item in container.transform)
{
Destroy(item.gameObject);
} mTouchID = int.MinValue; // Re-enable the collider
if (mButton != null) mButton.isEnabled = true;
else if (mCollider != null) mCollider.enabled = true; mTrans.parent = (container.reparentTarget != null) ? container.reparentTarget : container.transform;
mTrans.localPosition = Vector3.zero; // Update the grid and table references
mParent = mTrans.parent; // Notify the widgets that the parent has changed
NGUITools.MarkParentAsChanged(gameObject);
}
//没有检测到
else
{
NGUITools.Destroy(gameObject);
}
}
}
在本体上设置如上图的参数, 这样你拖出来就可以是克隆体,原来Grid的Item不变。
但是 克隆体自己 要重新设置参数,
参数设置在 OnDragDropStart() 函数中
(注意:OnDragDropStart() 函数是由本体调用克隆体的, 本体不会调用自己的 OnDragDropStart(), 所以你不用担心你在修改本体的参数)
拖放结束,克隆体 调用 OnDragDropRelease(GameObject surface) 方法,
GameObject surface 表示释放后 NGUI射线 检测到的碰撞体,
如果是NULL或者 没有检测到UIDragDropContainer,则销毁自己,
不然如果有 UIDragDropContainer,则重新设置自己的位置,重新设置自己的parent。
NGUI 自定义 Drag Item Script的更多相关文章
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...
- NGUI ScrollView 循环 Item 实现性能优化
今天来说说一直都让我在项目中头疼的其中一个问题,NGUI 的scrollView 列表性能问题,实现循环使用item减少性能上的开销. 希望能够给其他同学们使用和提供一个我个人的思路,这个写的不是太完 ...
- NGUI UIScrollView - 大量item子项的性能优化
一.当UIScrollView的以下的包括的子项太多(二三十个之上)时.它的滚动就会变的有些卡不流畅,尤其是在手机上. 对些网上也有非常多的优化它的相关,以下是我的一个优化: 1.将在超出裁剪框的一个 ...
- 如何自定义RecycleView item的间距
引言 在以前使用ListView和GridView时,设置item之间的间距还是相对比较简单的,因为它们的基本属性里面Android已经定义好了,可以直接设置属性值即可.但Google为了通用性和灵活 ...
- Android 自定义ListView Item侧滑删除
本程序是基于网上开源项目修改而来,具体来源忘了,懒得搜了,如果有不合适的地方,请原作者联系我,我会及时回复和处理的! 该例子程序中主要包含两个ListView,一个是实现侧滑删除,一个是侧滑出菜单,代 ...
- listview自定义背景以及item自定义背景
item向自定义背景,可以根据position来设置不同的背景. listview背景设置是需要注意设置下面这几项: //点下时整个页面的背景 android:cacheColorHint=" ...
- Qt-网易云音乐界面实现-7 消息中心实现,主要是QListWidget 自定义Item 和QTabwidget使用
最近写的有点烦躁, 感觉内容真的很多!很多!很多. 目前真的想知道网易官方在出这款产品是,用了多少人和多长时间. 今天写的这个消息中心,有点糙,只是原理实现了没有完全复制过来,心里有团火,不想写了. ...
- Qt listwigwt item 加入自定义元素
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- NGUI Scroll List
NGUI Scroll List 1.Add GameObject with Script UI Panel(NGUI -> UI -> NGUI Panel) and Script UI ...
随机推荐
- mysql基本知识---20151127-2
12.日期计算 YEAR( ).MONTH( )和DAYOFMONTH( ).CURDATE().RIGHT() 1>mysql> SELECT name, birth, CURDATE( ...
- [terry笔记]ora-00904 invalid identifier—同义词
今天遇到一个问题,说起来也简单,但是困扰我半天. 升级数据库后,一个功能无法运行,在后台观察到其sql,发现sql中包含一个包执行不了,报错ora-00904 invalid identifier w ...
- delphi 博客地址收藏
博客地址: Delphi XE5 for Android系列,值得入门者一读http://www.cnblogs.com/ChinaEHR/p/3346867.html http://hi.baidu ...
- 《Prism 5.0源码走读》Prism 5.0简介
Prism是一个开发和设计模块化WPF应用的基础框架,里面包含了MVVM pattern和设计示例.当前最新的版本是Prism 5.0,官方网站:https://compositewpf.codepl ...
- oracle 查看隐含参数脚本
set linesize 132 column name format a30 column value format a25 select x.ksppinm name, y.ksppstvl va ...
- 一篇文章教你读懂Makefile
makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professiona ...
- hdu 1277 全文检索
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1277 全文检索 Description 我们大家经常用google检索信息,但是检索信息的程序是很困难 ...
- android开发系列之消息机制
最近接触到一个比较有挑战性的项目,我发现里面使用大量的消息机制,现在这篇博客我想具体分析一下:android里面的消息到底是什么东西,消息机制到底有什么好处呢? 其实说到android消息机制,我们可 ...
- Windows Phone自定义控件 ProgressRing
前言 Windows Phone为开发者提供了很多原生控件,但在很多场景下我们需要对默认的功能或样式做一定的修改才能满足我们的需求,自定义控件应运而生.本文通过以自定义控件进度环(ProgressRi ...
- Windows下使用Visual Studio Code搭建Go语言环境
1.安装GO语言 下载地址: https://golang.org/dl/ Windows下直接运行安装GO语言即可. 安装成功. 安装完毕GO语言后,需要添加GOPATH环 ...