1顶级父类加boxCollider和UIDragScrollView脚本保证在item拖走后也能通过拖拽剩余区域的方式操作。

2下一级添加UIPanel在Clipping设定区域,注意如果设定softClip就不能保证item填满,会从alpha值为1的地方开始填充。
3添加UIScrollView脚本和SpringPanel脚本(如果位置不是zero要在SpringPanel中设置)。
4再下级如要保证item位置总是合适则添加UICenterOnChild脚本(如果添加则不能保证充满),如要自动排列item则添加UIGrid脚本,注意此级的位置,他的位置会决定自动排列的item的起始位置。
5item级如果有boxCollider则要添加UIDragScrollView脚本,保证拖动item时也能响应。
6item级如果有boxCollider可以添加UICenterOnClick脚本通过点击使自己居中。
 
 

在NGUI中,ScrollView是一个非常棒的界面,不过刚开始使用的时候一直一些事项没有搞懂,现在算是明白了,可以轻松上手了,下面把一些注意的问题写出来分享一下。

一个是回弹问题,开始做的时候,一直没有明白例子中那个回弹的效果是如何实现,如图这样的效果

确实这个效果在IOS上非常流行,用户体验也很棒,它的原理也是利用一个UIDragPanelContents代码控件完成的。

在window的UIPanel里面有这么一个物体Outline,在例子界面上的作用是一个ScrollView背景,之所以可以回弹全靠这个,点击这个物体,给它添加一个Collier和UIDragPanelContents,将Draggable Panel属性设置为Clipped View即可看到效果了,记住这个背景最好放大些,这样手指只要在这个背景的区域内都可以滑动ScrollView了。

如果在自己的界面中不想看到这层背景,但是没有这层又不行,最好的方法就是把这层的Alpha值设为0,这样就变成透明的了,也就看不到了

当然,如果你的里面放置的仅仅是文本图片之类的,基本就结束了,但是如果是响应的控件,比如按钮,可以会有无法响应的问题,就是可以滑动,但是按钮无法被点击,造成的原因其实是Collider的前后关系,这层触摸背景的Collider比按钮的Collider要靠前,造成触发器先接受到了,所以按钮就不响应了。

解决办法就是把触摸背景这层的Z轴放后一些,放在按钮的后面,这样问题就可以解决了。

二是ScrollView里面的Item没有被装满却可以被拉动,会造成Item的位置改变而无法回复原位,如果不想被拉动,只有里面的Item超过了显示界面才可以被拉动,只需要勾上ScrollViewPanel上的Disable Drag If Fits即可。

NGUI ScrollView总结的更多相关文章

  1. NGUI ScrollView 循环 Item 实现性能优化

    今天来说说一直都让我在项目中头疼的其中一个问题,NGUI 的scrollView 列表性能问题,实现循环使用item减少性能上的开销. 希望能够给其他同学们使用和提供一个我个人的思路,这个写的不是太完 ...

  2. NGUI ScrollView中的Bounds

    获取到的Bounds值是固定的,是因为Bounds区域的计算是被动计算,需要主动调用使其刷新 scrollView.InvalidateBounds(); 另外Bounds的Min和Max似乎和NGU ...

  3. NGUI ScrollView动态加入和删除对象。

    动态加入,基本思想是: 1.先把要加入的元素在编辑器中编辑好,制作成一个prefab. 2.在代码中,动态的生成一个新的对象增加到Grid对象的子对象中.这里利用到了Resources对象,这个对象的 ...

  4. NGUI ScrollView出屏幕再回来坐标混乱解决

    主要是子节点没更新.乍一看调用UIPanel的Refresh()会管用,其实不然. 解决方法调用UIPanel的Invalidate让他所有子节点更新. panel.Invalidate(true);

  5. NGUI ScrollView中MoveRelative,Scroll的区别

    Scroll会计算边界,和直接拖拽的效果类似 MoveRelative不计算边界,超出边界了也不会管,也不会应用缓动效果

  6. NGUI研究之开发项目的一些使用心得比較细节

     不知不觉使用NGI插件已经有一段时间了.感觉NGUI真的是眼下Unity3D中最好用的UI插件. 可是它也有一些不是BUG的BUG,这些问题可能会让新人摸不着头脑,那么这篇文章将总结一下这段时间 ...

  7. NGUI List优化

    腾讯是如何做 Unity 手游性能优化的 https://juejin.im/entry/5774af485bbb50005925a3b1 Unity - NGUI - 优化ScrollView的一些 ...

  8. 使用泛型简单封装NGUI的ScrollView实现滑动列表

    懒,是老毛病了,周末跑了半马,跑完也是一通累,好久没锻炼了..也是懒的,有时都懒的写博客..最近看到项目中各种滑动列表框,本着要懒出水平来的原则,决定花点时间简单处理下(暂时未做列表太多时的优化):1 ...

  9. [Unity]Unity开发NGUI代码实现ScrollView(放大视图)

    Unity开发NGUI代码实现ScrollView(放大视图) 下载NGUI包 导入NGUI3.9.1版本package 创建MainCameraScript.cs脚本 MainCameraScrip ...

随机推荐

  1. java中set的交集、差集、并集的简单实现

    实现思路很简单,直接上代码: package test; import java.util.HashSet; import java.util.Set; public class Test { pub ...

  2. decimalFormat(小数格式)

    这个格式是用来形容小数的,所以只对小数部分起作用 0 一个数字 # 一个数字,不包括 0 (0和#就是一个占位符,有几个就意味着要显示多少位,区别是0 匹配任意数字,#匹配不包括0的任意数字(最后的0 ...

  3. ES6 - promise对象

    Promise的设计初衷 我们使用ajax请求数据,得到数据后再对数据进行操作,可是有时候,对得到的数据进行操作的过程中,可能又要用到ajax请求,这时,我们的代码就变成了这样: $.ajax({ s ...

  4. Toolkit.getImage获取图片

    public class Img { private static final Toolkit tk = Toolkit.getDefaultToolkit(); public static fina ...

  5. HTML、html

    1.HTTPS(超文本传输协议,HyperText Transfer Protocol)        超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息.HTTP协议以明文方式发 ...

  6. jquery选择器之属性选择器

    [attribute]   匹配指定属性名的所有元素 [attribute=value] 匹配给定的属性名是某个特定值的属性 [attribute!=value] 匹配给定的属性名不是某个特定值的属性 ...

  7. npm以及gulp相关操作

    在工作流相关的第一篇博客中,我们安装了nodejs的环境,那么nodejs自带的npm是一个功能十分强大的管理器,它已经不仅仅是局限于nodejs的版本管理器了,那么当现在我们可以通过npm来下载我们 ...

  8. 转载部长一篇大作:常用排序算法之JavaScript实现

    转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...

  9. winform中dataGridView高度自适应填充完数据的高度

    // winform中dataGridView高度自适应填充完数据的高度,就是dataGridView自身不产生滚动条,自己的高度是根据数据的多少而变动. 在load的时候,数据绑定后,加上如下代码: ...

  10. SQL Server 2008 收缩日志 清空删除大日志文件 转载

    SQL Server 2008 收缩日志 清空删除大日志文件 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)Ba ...