(一)unity优化方案:优化NGUI中ScrollView海量数据的显示(适用于游戏中排行榜,商城等可滚动界面的显示)

本文介绍了如何优化Unity中的ScrollView显示大量数据,通过重用item提高性能。详细阐述了制作scrollview界面、编写数据类脚本、Item脚本以及核心的ScrollViewManager脚本的过程,实现数据动态加载和滚动时的无缝切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

游戏中的排行榜,商城等可滚动显示的界面通常要显示海量的数据,如果直接把所有数据对应的item实例化到Grid列表下面,作为一名游戏开发者,这么做是极为不明智的,通常用的技巧就是重用item。打个比方:如果有千条数据需要显示在界面中,但界面只能一次显示3条数据信息,那么重用item的思想只需要最多最开始实例化出4个item加入带Grid列表下面即可,而不是实例化出千个item,无疑大大提高了游戏性能。

接下来我说一下重用item的基本思想:当滚动列表向上移动时(也就是鼠标或触屏向上移动,数据向下显示),就把超出屏幕上部的item移动到列表末尾位置并重置数据。当滚动列表向下移动时(也就是鼠标或触屏向下移动,数据向上显示),就把超出屏幕下部的item移动到列表开头。思想说完了,接下来开始正式开发Demo了。

一、制作一个scrollview滚动界面

这里我是比着NGUI的官方Demo(下载NGUI插件并导入untiy,然后会有一个Example7-Scroll View(Panel).unity)制作的。如下图所示,官方Demo是一个可以横向滚动的滚动列表,而我要做成一个竖向滚动的列表(一般排行榜、商城都是竖向显示数据的哈哈哈,再来自己动手做一遍效果比较好)。

制作完scrollview后,在grid下创建一个我们想要的Item,不要忘记添加BosCollider和UIDragScrollView,BosCollider要勾选IsTrigger。并制作成预制体。制作完后运行场景,可以看到一个item,并且可以在ScrollView范围内拖拽.。

下面是我做的效果图:

二、编写脚本

2.1 编写数据类脚本ItemData,代码如下:

/// <summary>
/// item数据类
/// </summary>
public class ItemData {

    /// <summary>
    /// item的索引
    /// </summary>
    public int index;
    //item的价格
    public string money;
    public ItemData()
    {

    }
    public ItemData(int index,string money)
    {
        this.index = index;
        this.money = money;
    }
}

这个类记录了列表中每个item的初始数据,成员字段有两个,一个是索引index,一个是物品显示的价格money(item的价格,为了方便展示效果)。

 

2.2编写脚本Item,代码如下:

/// &
要实现带有遮罩和滑动条的ScrollView,在Unity中使用NGUI 2.0.3d插件,你需要遵循以下步骤来完成你的UI设计。首先,确保你的Unity版本为3.5.0f5,并且已经安装了NGUI插件。 参考资源链接:[Unity3D NGUI:制作遮罩与滑动条的完整教程](https://wenku.csdn.net/doc/3wwb45mbfm?spm=1055.2569.3001.10343) 1. **设置UIPanel**: 创建个UIPanel,并将其Clipping属性设置为SoftClip,这样超出面板大小的子元素就会被遮罩。根据需求调整遮罩大小以适应设计。 2. **添加滚动条**: 在UIPanel内添加个UIScrollBar,并为它配置个滑动事件处理器(通常是个脚本组件),以便它可以与ScrollView协同工作。 3. **创建ScrollView组件**: 在UIPanel中创建个UIScrollView组件。将UIPanel作为ScrollView的content,并为其添加个DraggablePanel组件,以便用户可以通过拖动来滚动内容。 4. **添加并配置Sprite**: 为你的滚动内容添加Sprite或多个Sprite,并将它们放置在ScrollView的content下。设置Sprite的位置和尺寸,确保它们排列得当。 5. **实现拖拽功能**: 为所有Sprite添加刚体(Rigidbody)组件,并勾选Is Kinematic属性,这样你就可以通过脚本控制它们的移动。确保为每个Sprite添加Collider组件,以便它们能够响应拖拽事件。 6. **测试滚动功能**: 确认滚动条能够正确地控制ScrollView滚动,并且遮罩效果正确地隐藏了超出范围的内容。 7. **调整和优化**: 根据需要调整Sprite的尺寸、位置以及遮罩的边缘效果,确保最终的用户交互体验流畅无误。 通过这些步骤,你将能够制作个功能完备、外观精致的滚动菜单,适用于游戏或其他需要复杂交互的场景。要深入了解这些技术细节,可以参考《Unity3D NGUI:制作遮罩与滑动条的完整教程》,这是份详尽的指南,涵盖了从基础到高级的NGUI应用技巧,帮助你打造更加动态和响应式的UI。 参考资源链接:[Unity3D NGUI:制作遮罩与滑动条的完整教程](https://wenku.csdn.net/doc/3wwb45mbfm?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值