您的位置:首页 > 移动开发 > Unity3D

list for ngui(Unity)列表

2014-11-16 17:19 507 查看
最近做的东西,发现与数据相互的时候,需要用到大量的列表来展示给玩家看,但是ngui给出的列表例子是有多少项就生成多少项。当我们需要展示的列表数上50个的时候,效率就会急剧下降,在某些性能差得手机上,因为列表太多导致都没法拖动的现象。

这两天在ngui的基础上写了一个列表项可以重复利用的demo。

这个demo主要包括3种list:1 普通的重复利用列表 2 在普通的重复利用列表中加入了可以直接定位到某一行的的功能3 每一个列表拥有展开功能的重复利用列表

demo:







主要思想

最上面和最下面的列表项永远不动(避免ngui的 UiscrollView 类的坐标乱动)。FixedUpdate判断是否 绑定UiscrollView 的这个对象是否有拖动,如果有通过对比上一次的位置得到是向上还是向下拖动。每次的拖动去判断是否有列表已经出了显示区,然后重置有重复列表项的位置。

源码及demo



以下是使用步骤,如有不妥的地方,欢迎大家指出--------by 伊始的温暖


使用步骤

如果没有ngui,请先导入ngui

1 首先新建一个空对象MyList,给这个对象绑定一下的ngui脚本


2 在MyList下加一个sprite作为这个列表的背景,拖动摄像机距离,使得背景能看到



3 在Mylist下面新建一个空对象View,这个View就是列表的父类,首先给view绑定一个ngui的UIScrollView的脚本,这时他会自动帮你加一个UIPlane的脚本。

   1这个是层级,我们需要把我们的层级设置的比父类高一些,

   2我们需要把列表出界的部分隐藏的

   3 这个地方很重要,他就是我们列表的中显示区域的设置地方,我们在缩放大小的时候可以看到白色的框里面的紫色区域在变化

   4 这个设置是如果我们的列表项不足以填充满我们的区域的话,就不能拖动

  5 这会我们是做的纵向拖动的列表



4然后开始做我们的item,需要给这个item添加一个ngui的UIDragScrollView的脚本,且需要添加一个碰撞盒子来监听拖动事件


5这时关于NGUI的准备都做完了, 现在来加我们自己的代码。在我们的item上面绑定Item这个脚本,由脚本里面的Laber来显示我们的数据,再生成一个预制。



6在MyList上加入ListWindow脚本,并填写相关的参数。


7Ok,我们现在的工作都做完了,我们写了一个测试代码,现在我们绑定在我们的相机上面,因为我们用到了Ngui的拖动监听事件(就是我们刚刚加的ngui的脚本里面)我们需要再相机上加入一个ngui的UICamera脚本。并且给我们的测试代码填写相关的参数,strs是我们模拟的数据,需要输入一个长度。


8 大功告成

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息