码迷,mamicode.com
首页 > 编程语言 > 详细

基于 unity ngui 上的滚动加载__UiVirtual

时间:2015-07-11 18:11:12      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

在游戏里面经常会有背包,好友,对话,这样的列表。当列表的内容多了,如果一打开界面就对所有内容进行实例化,会消耗大量的性能,且会造成UI上的卡顿。

于是便需要,在列表里面只实例化屏幕上可见的item。屏幕外的不需要进行实例化。

这里 https://github.com/textcube/infinitescroll 便是我们要找的内容 如图:

技术分享

然而在在看源码的时候我们不难发现,这个开源的git仓库,是对移动到屏幕外面的item进行了destroy(见WordItem.cs),对移动到屏幕上的item使用NGUITools.AddChild进行创建加载(见WordManager.cs)。

一般来说,对于经常创建,销毁的对象,可以使用ObjectPool进行优化  https://github.com/UnityPatterns/ObjectPool

使用untiy专业版带的PorFiler截图如下:

引入ObjectPool优化前:

技术分享

引入ObjectPool优化后:

技术分享

可以看出Gpu和Memory都有所下降。

 

在很多情况下,ui界面是多列的。于是可以简单修改infinitescroll源码,在WordManager.cs中加入columns,rows进行控制,改动后截图如下:

技术分享

 

改动后demo git地址: https://coding.net/u/fatlin/p/UiVirtual/git

基于 unity ngui 上的滚动加载__UiVirtual

标签:

原文地址:http://www.cnblogs.com/fatlin/p/4638902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!