基于 unity ngui 上的滚动加载__UiVirtual
在游戏里面经常会有背包,好友,对话,这样的列表。当列表的内容多了,如果一打开界面就对所有内容进行实例化,会消耗大量的性能,且会造成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的更多相关文章
- Unity+NGUI打造网络图片异步加载和本地缓存工具(一)
我们已经开发了在移动终端中,异步网络图片被装入多,在unity其中尽管AssetBundle存在,通常第一个好游戏的资源,然后加载到现场,但也有很多地方可以使用异步网络加载图像以及其缓存机制. 我也写 ...
- vue项目上滑滚动加载更多&下拉刷新
上滑滚动时获取内容高度.屏幕高度和滚动高度(此处#sslist要为内容是id) 内容高度 let innerHeight = document.querySelector("#sslist ...
- 基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无 ...
- 基于jquery鼠标或者移动端滚动加载数据
基于jquery鼠标或者移动端滚动加载数据 var stop = true; // 防止重复请求数据 $(window).scroll(function () { totalheight = pars ...
- [转] Jquery滚动加载
原文地址:http://hi.baidu.com/vipxiaofan/item/9eb927b795671f77254b0985 另外一个asp.net的例子:http://blog.csdn.ne ...
- js滚动加载小插件
本文实例讲述了jquery滚动加载数据的方法.分享给大家供大家参考.具体分析如下: 少废话直接上代码!!!粗暴,直接,干脆 0//lk-2017-05-04 1(function($, win) { ...
- Vue滚动加载自定义指令
用Vue在移动端做滚动加载,使用mint-ui框架, InfiniteScroll指令loadmore组件,在uc浏览器和qq浏览器都无法触发.无奈我只能自己写了. 决定用vue 的自定义指令 写滚动 ...
- 使用 Angular 和 RxJS 实现的无限滚动加载
无限滚动加载应该是怎样的? 无限滚动加载列表在用户将页面滚动到指定位置后会异步加载数据.这是避免寻主动加载(每次都需要用户去点击)的好方法,而且它能真正保持应用的性能.同时它还是降低带宽和增强用户体验 ...
- 使用infinite-scroll实现Ghost博文列表的滚动加载
Ghost博客系统默认提供的博文列表为传统的翻页方式(通过点击上一页.下一页等按钮来切换),随着移动客户端的发展,瀑布流式的滚动加载方式得到广泛应用,有效地提高了用户浏览信息的流畅度.下面详述如何通过 ...
随机推荐
- 终端I/O之行控制函数
下列4个函数提供了终端设备的行控制能力.其中,filedes引用一个终端设备,否则出错返回,errno设置为ENOTTY. #include <termios.h> int tcdrain ...
- C# 制作透明窗体
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- c#基础--常量(const),只读字段(readonly)
1.0:常量 常量被关键字const 所修饰 我们来看看常量的demo class Program { static void Main(string[] args) { const string n ...
- 【阿里云产品公测】PTS压力测试WP站搜索
[阿里云产品公测]PTS压力测试WP站搜索 作者:阿里云用户cnsjw PTS性能测试服务是一个非常非常强大的压力测试工具.可以模拟百人同时访问网站的情况,并监测ECS和RDS的各项指标,生成非常详细 ...
- 剑指Offer39 数组中寻找和为sum的两个数字
/************************************************************************* > File Name: 39_TwoNum ...
- Storm累计求和中使用各种分组Grouping
Shuffle Grouping: 随机分组, 随机派发stream里面的tuple, 保证bolt中的每个任务接收到的tuple数目相同.(它能实现较好的负载均衡) Fields Grouping: ...
- 转:自建CDN防御DDoS(1, 2, 3)infoq
本文中提到的要点: 1. 针对恶意流的应对方法与策略.(基本上,中级的,顶级的) 2. IP分类的脚本 3. 前端proxy工具的选择与使用. 4. 开源日志系统的选择与比较. (http:/ ...
- ORA-01502错误成因和解决方法
这个错误是由于索引失效造成的,重建索引后,问题就解决了. 我们看到,当使用类似 alter table xxxxxx move tablespace xxxxxxx 命令后,索引就会失效. 当然,作为 ...
- Part 3 ViewData and ViewBag in mvc
ViewBag and ViewData is a mechanism(机制) to pass data from controller to view. We use '@' symbol(符号) ...
- DWZ (JUI) 教程 根据ID刷新 dialog
reloadDialog:function(dialogId){ var dialog = $("body").data(dialogId); if(dialog){ $.pdia ...