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

  • 相关阅读:
    private
    接口
    抽象类的认识
    静态导入和类中的代码块
    instanceof 与 应用类型强转
    重写的理解
    继承初体验
    赶紧收藏!春招Java面经总结,拿大厂Offer的必备复习资料!
    react native 升级到0.31.0的相关问题 mac xcode开发环境
    c# 线程池多任务处理并返回值
  • 原文地址:https://www.cnblogs.com/fatlin/p/4638902.html
Copyright © 2011-2022 走看看