zoukankan      html  css  js  c++  java
  • 基于 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

  • 相关阅读:
    springmvc与Ajax交互
    springmvc请求参数获取的几种方法
    struts2进阶篇(2)
    mysql explain用法
    struts2基础篇(1)
    struts2工作原理
    PHP 数组的拷贝是按值传递 or 按引用传递
    js中使用cookie
    Yii rules常用规则
    js倒计时发送验证码按钮
  • 原文地址:https://www.cnblogs.com/fatlin/p/4638902.html
Copyright © 2011-2022 走看看