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

  • 相关阅读:
    js中常用的算法排序
    bootstrap Table的使用方法
    js中的继承
    js函数的节流与防抖
    along.js
    Vue组件通讯
    前端性能优化
    Vue路由学习心得
    Vue 2.0 路由全局守卫
    【前端】自适应布局方法总结
  • 原文地址:https://www.cnblogs.com/fatlin/p/4638902.html
Copyright © 2011-2022 走看看