ScrollView是NGUI非常好用的一个内置组件,但是效率不好,当子物体过多的时候,一旦开始拖动就帧数狂掉,我目前有3个解决思路:
1. NGUI自带的Example 8 - Scroll View (Camera),用摄像机代替panel进行裁切和移动
2. NGUI自带的Example 14 - Endless Scroll Views,它使用了一个脚本叫做UIWrapContent,这个脚本实现了循环改变子物体位置的功能,可以参考该脚本实现复用Item来实现大列表的功能
3. UIWrapContent还提供了cullContent的功能,它将显示区域外的Item的Active关闭。这个做法不治本,但是确实能让流畅度提高很多
方法1效果实在弊端也多,毕竟多了一个摄像机,割裂了UI间的层次关系,斟酌使用。
方法2做法复杂,从根本解决问题,应该在开发早期就写好功能,直接使用,另外可参考插件AdvanceList for NGUI
方法3简单实用,效果有限,把UIWrapContent里的相关代码抽取出来即可,哪里需要挂哪里,特别方便