ScrollRect滑动优化(二)--动态创建Item列表

unity实现一个列表组件,为scroll view中动态创建显示子项,实现思路和过程--unity学习笔记 在做demo的时候遇到了滚动列表,开始为了实现点击切换模型的功能,选择在编辑器中直接添加,但是这种方式很麻烦也不灵活。 阅读详情

首先是效果图:



单个item的



每个item的位置排序根据:

    public static Vector2 GetPosByIndex(int index)
    {  //宽度都为75,需要和Layout Element配合使用
        return new Vector2(0, -75 * index);
    }


通过资源载入的item,这个只是生成了GameObject,还咩有对其进行位置调整

    static GameObject _downloadItem;
    static GameObject downloadItem
    {
        get
        {
            if (_downloadItem == null)
                _downloadItem = GameObject.Instantiate(Resources.Load("offlineMapItem")) as GameObject;
            return _downloadItem;
        }
    }


对item限制高宽,位置的调整

    public static void SetMapDataItemView(MapDataItem item, GameObject root, Vector2 pos)
    {   
        RectTransform rt = GameObject.Instantiate(downloadItem, root.transform).transform as RectTransform;
        rt.anchoredPosition = pos;
        rt.offsetMax = new Vector2(0, rt.offsetMax.y);
        rt.offsetMin = new Vector2(0, rt.offsetMin.y);
        
        rt.localScale = Vector3.one;

        rt.GetComponent<OfflineMapItem>().Show(item);//进行每个item的数据绑定


    }

开始创建item

        public void Test() {
            int mainIndex = 0;
            foreach (var item in downloadedList)
            {
                MapDownloadHelper.SetMapDataItemView(item, mainRoot,GetPosByIndex(mainIndex));
                mainIndex++;
            }
        }

单个Item的数据类

public class OfflineMapItem : MonoBehaviour
{

    public Text mTitle;
    public Text mSize;

    public Button mDownloadButton;
    public Button mDeletedButton;

    public Slider mProgress;

    MapDataItem data;
    private bool isDownload = false;

    public void Show(MapDataItem item)
    {
        data = item;
        mTitle.text = data.getName();
        mSize.text = data.getSize();

        mDownloadButton.onClick.AddListener(OnDownloadClick);
        mDeletedButton.onClick.AddListener(OnDeletedClick);
  
    }


Unity性能优化:Loop Scroll Rect原理与百万级UI列表实战指南 在Unity应用开发中,UI列表是展示大量数据的常见组件,但原生ScrollRect在面对海量数据时,会因实例化所有UI元素而导致严重的性能瓶颈,引发卡顿、内存飙升等问题。其核心原理在于缺乏有效的资源复用机制。对象池技术通过复用有限数量的UI实例来映射无限的数据集,是解决这一问题的关键技术,它能显著降低CPU开销与内存占用,提升应用流畅度。这一优化方案在移动端和WebGL平台的游戏及应用中价值巨大,尤其适用于聊天记录、商品列表、排行榜等需要展示成千上万条数据的场景。本文以Unity中的Loop Scroll 阅读详情

相关推荐

Unity UGUI无限滚动排行榜:从原理到实战的性能优化指南

在游戏开发中,UI性能优化是提升玩家体验的关键环节。当处理大量数据列表时,传统的一次性渲染所有UI元素的方式会导致严重的性能问题,尤其是在移动设备上。虚拟列表技术通过动态创建和回收可视区域内的UI项,将同时渲染的元素数量控制在恒定范围,从而大幅降低内存和CPU开销。这项技术的核心价值在于,它使得处理成千上万条数据的列表也能保持流畅的滚动体验。在Unity的UGUI框架下,实现虚拟列表需要精确控制ScrollRect、Content的布局以及高效的对象池管理。本文将结合游戏排行榜这一典型应用场景,深入解析如何

weixin_30420305的博客 356

Unity使用UGUI制作无限滑动列表

记录Unity中使用UGUI实现无限滑动列表

weixin_50702814的博客 2154

Unity UGUI性能优化实战:从CanvasUpdateRegistry到LayoutRebuilder,如何避免UI卡顿

在Unity游戏开发中,UI性能优化是保障流畅用户体验的关键环节。其核心原理在于理解UI系统的更新机制,特别是Canvas的布局与重建流程。CanvasUpdateRegistry作为UI更新的调度中心,负责管理所有标记为“脏”的UI元素;而LayoutRebuilder则是执行具体布局计算的引擎。这两者的频繁触发是导致UI卡顿的主要技术根源。从技术价值看,优化UI性能不仅能提升帧率,更能直接增强游戏的操作响应和整体品质。在应用场景上,无论是移动端游戏、复杂UI界面还是高频交互的HUD,都需要精细控制重建开

weixin_34413802的博客 323

Unity_给滚动视图动态添加子物体_066

ScrollView 的父子层次如下: 在ScrollView中添加的组件如下 在ViewPort中添加的组件如下: 在Content中添加的组件如下: 在ScrollView 中绑定的脚本如下:using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSys

杨勇博客之家 5194

Unity UI点击失灵终极排查:EventSystem原理、Raycast Target配置与性能优化

在Unity游戏与应用开发中,UI交互的稳定性和响应速度直接影响用户体验。其核心机制依赖于事件系统(EventSystem),它通过输入模块(Input Module)捕获操作,经由射线投射器(Raycaster)进行命中检测,最终将事件路由至对应UI元素。这一流程确保了点击、拖拽等操作的准确传递,是实现复杂界面交互的技术基础。理解其工作原理,对于解决UI失灵、提升性能具有关键价值,尤其在手游和频繁交互的App中。实践中,Raycast Target的配置不当是导致点击失效的常见原因,而Canvas的合理拆

weixin_33875839的博客 298

[Unity UGUI]ScrollRect滚动效果大全

[Unity UGUI]ScrollRect滚动效果大全 支持缩放滑动效果 - 支持动态缩放循环加载 - 支持大数据固定Item复用加载 - 支持不用Mask遮罩无限循环加载 - 支持ObjectPool动态加载 - 支持无限不规则子物体动态加载 - 支持拖动并点击和拖拽 - 支持拖动并拖拽 - 支持ScrollRect拖动自动吸附功能(拖动是否超过一半自动进退)

如何优化UGUI的ScrollRect

UGUI的ScrollRect在加载太多物体的时候,第一次弹出界面会非常卡顿,而且不在界面里的内容依然会参与绘制,导致毫无意义的浪费。笔者对此进行了一番研究,并将心得与大家分享. 转载自侑虎科技:这是侑虎科技第136篇原创文章,感谢作者钱康来供稿。 介绍 每个元素知道自己的序号,可以根据需要修改自己的内容、大小等信息。 此外支持了ScrollBar,支持横向、纵向及正反向。

su9257的博客 1652

ScrollRectManager.lua

UGUI lua ScrollRect 下 使用 Update 循环使用item,纯逻辑处理 需要自己修改适合自己的。

Unity滚动视图的制作

首先命名一个Panel 命名为ScrollRect,同时添加添加 ScrollRect组件 在ScrollRect下面在添加一个Panel 命名为Grid,同时添加ScrollRect组件 同时设置如图的每个cell的尺寸(size)和间隔(spacing)在grid下面可以先添加几个Image先填充一下内容,其实开发中都是动态生成的,在填充过程中如果ScrollRect比较窄且比较高的话,I

杨勇博客之家 2360

unity3D循环利用 Item,避免重复创建大量item代码

在项目开发中经常会涉及到动态创建列表,这样就会创建出一大堆的预制体,这里创建固定数量的预制体,只需要占满显示区域,在滑动的时候通过计算滑出显示范围的位置移动到下一个将要显示的位置,刷新显示内容即可实现。

优化无限滑动

优化了无限滑动功能在原有的基础上进一步优化了调动端

Unity循环滑动列表:多表格界面性能优化与实现详解

在Unity UI开发中,处理大量数据展示时,性能优化是核心挑战。对象池技术通过复用已创建的对象,避免了频繁的实例化与销毁,能有效降低内存开销和CPU压力,是提升应用流畅度的关键技术。其原理是预先创建一定数量的对象放入池中,使用时取出,使用完毕后归还,而非直接销毁。这项技术的价值在于它能将UI元素创建的消耗从O(N)降至O(1),从根本上解决数据量增大导致的界面卡顿问题。它广泛应用于游戏的角色背包、商城列表、后台管理系统等需要展示海量条目的场景。本文聚焦于循环滑动列表这一具体实践,它正是对象池思想的典型应用

java2000.net 467

Unity ScrollRect滑动定位优化

Unity ScrollRect滑动定位优化

Unity无限滚动列表:从原理到实战的性能优化指南

在Unity UI开发中,处理大量数据展示时,性能优化是核心挑战。对象池技术通过复用已有实例,避免频繁的实例化与销毁,是提升运行时效率的关键原理。这项技术能显著降低内存开销与CPU压力,其价值在于保障应用的流畅性与稳定性。在聊天记录、排行榜、背包系统等需要展示海量条目的应用场景中,对象池与UI虚拟化结合,便催生了无限滚动列表这一高效解决方案。本文以Unity的ScrollRect和RectTransform为基础,深入探讨如何实现一个高性能的无限滚动列表,并分享动态高度支持、数据刷新及常见问题排查等工程实践

weixin_30835649的博客 381

UNSW-NB15数据集:网络流量分析与恶意攻击检测实战指南

本文提供了UNSW-NB15数据集在网络流量分析与恶意攻击检测领域的实战指南。详细介绍了该数据集的构成、核心特征解析、特征工程处理、机器学习模型训练与评估方法,并探讨了模型部署及持续优化的挑战与思路,帮助读者构建高效的网络攻击检测系统。

weixin_29193359的博客 258

Mac微信聊天记录备份终极指南:用软链接轻松迁移到外接硬盘(附重签名教程)

本文详细介绍了如何通过软链接技术将Mac微信聊天记录备份迁移到外接硬盘,解决内置存储空间不足的问题。教程包括备份文件定位、软链接创建及微信重签名步骤,帮助用户高效管理微信数据,释放Mac存储空间。

uuu88的博客 1164

Unity UGUI ScrollView性能优化:Item回收复用原理与实现详解

在Unity UI开发中,处理大量数据列表时,性能优化是核心挑战。对象池技术通过复用GameObject实例,有效管理内存与CPU资源,是解决此问题的关键技术原理。其核心价值在于显著降低实例化开销与内存占用,提升滚动流畅度与帧率稳定性。这一技术广泛应用于聊天记录、排行榜、商品列表等需要展示海量数据的场景。本文深入探讨了UGUI ScrollView的Item回收复用机制,结合对象池管理与数据绑定等热词,提供了从原理到工程实践的自定义组件实现方案,帮助开发者构建高性能的滚动列表。

weixin_33725270的博客 440

ARTIX-7 GTP 3G-SDI 工程构建与调试实战

本文详细介绍了基于ARTIX-7 FPGA和GTP收发器的3G-SDI工程构建与调试实战。从基础概念解析到Vivado工程创建、GTP IP核配置、SDI IP核集成,再到系统集成与时钟域处理,提供了全面的技术指导。文章还分享了调试技巧、常见问题排查方法以及性能验证步骤,帮助开发者快速掌握3G-SDI视频传输技术的实现与优化。

weixin_30443813的博客 256

UGUI 实现无限滚动

界面中大量使用了 Outline 以及界面复杂度较高,在邮件 等需要超长滚动列表的界面,就会十分卡顿。既然美术与策划同学不能妥协,那就来优化代码。按照滚动区域的属性,展示给玩家看的只是一小块区域,比如列表中有100封邮件,其实只要显示个七八封就够了,剩下的,在向上滑动的时候,把第一排移动到最后一排,替换内容。

Hello Captain 1万+

SAP SD RRB实战:从DIP参数文件到DP90/DP91开票的完整链路解析

本文详细解析了SAP SD模块中RRB(Resource-related Billing)业务场景的完整链路,从DIP参数文件配置到DP90/DP91开票操作。通过实战案例分享DIP参数文件的核心配置技巧、特性设置及物料决定要点,帮助用户掌握动态开票的关键技术,提升SAP SD RRB的实施效率。

weixin_26833939的博客 378

浅谈Android MVI架构---大自然的搬运工~~~

浅谈 Android MVI架构

hong_world的博客 2154

Unity UGUI深度优化:从Canvas重建到性能瓶颈的全面解析

在Unity游戏开发中,UI系统的性能优化是保障流畅用户体验的核心技术环节。其原理基于渲染管线的批处理机制与Canvas的重建逻辑,通过减少Draw Call和CPU开销来提升帧率稳定性。这项技术的价值在于能够显著降低移动端和WebGL项目的卡顿现象,直接提升产品的用户留存率。常见的应用场景包括复杂界面的滑动列表、实时更新的HUD元素以及高频交互的弹窗系统。本文聚焦于UGUI深度优化,系统剖析了Canvas拆分、动静分离、Raycast Target管理以及Mask组件对合批的影响等关键热词,并提供了从图集

weixin_34239169的博客 407

高通Sensor Tuning实战:手把手教你用Chromatix生成并打包bin文件(附避坑指南)

本文详细介绍了高通Sensor Tuning的全流程实战,从Chromatix配置到Bin文件加载验证。通过手把手教程,帮助开发者掌握Chromatix工具链的使用,避免常见配置错误,提升调试效率。特别针对kalama等新一代平台,提供经过验证的解决方案和避坑指南。

ios99的博客 483

Unity移动端UI性能优化:Sprite管理与图集打包实战指南

在Unity移动端开发中,纹理管理与渲染优化是提升应用性能的核心基础。纹理作为图形渲染的基本单元,其内存占用、加载效率与渲染调用直接影响帧率与功耗。通过合理的纹理压缩格式选择(如ASTC、PVRTC)与尺寸规范,可以从源头控制资源开销。而图集技术通过将多个纹理合并为单一资源,实现渲染合批,显著降低Draw Call,这是优化UI渲染性能的关键原理。其技术价值在于平衡内存使用与渲染效率,避免因大量散装纹理导致的性能瓶颈。在重度UI交互的游戏与应用中,合理的图集分包策略与运行时管理,能够有效解决滑动卡顿、界面延

weixin_30784501的博客 329

2026AI漫剧放心大胆做!小白也能轻松出片(附保姆级教程)

要是在2025,我大概率会劝他再等等,毕竟那时工具还没这么顺手。但到了2026年的今天,我的回答得很干脆:放心去做,绝对没问题。这一年多来,AI漫剧这块的变化真可谓翻天覆地。过去你想拍个像样的短片,哪怕再简陋,也得凑齐拍摄设备、找场地、找演员,后期剪辑更是折磨。但现在,时代变了,AI已经把创作的门槛踏平了。你不需要请演员,也不用操心灯光布景,更不用为剪辑特效烧钱。一个人,一台电脑,花几天时间就能做一部完整的AI漫剧。你只要有有想表达的故事,突发的灵感,剩下的,都能直接交给AI落地。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 488

【项目实战】TARA威胁分析和风险评估

TARA是信息安全领域中的一种风险评估方法,在汽车信息安全的上下文中,TARA分析特别重要,因为它可以帮助识别和管理与智能网联车辆相关的各种威胁,包括数据泄露、未经授权的访问、远程操控等。通过TARA分析,企业可以制定出针对性的安全目标、产品要求和产品安全声明,以确保汽车及其零部件符合相关的信息安全标准和法规。此外,TARA分析还可以与数字化建模系统结合,以更系统化和高效的方式进行风险评估和管理。

奶爸的编程之路,也就一周冷个三天 2709
上一篇: Unity3d_OnApplicationPause与OnApplicationFocus(监听当前程序的焦点)
下一篇: C# 调用C++ DLL (一)
Le_Sam
博客等级 码龄11年 342粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值