Unity无限列表插件-EnhancedScroller 简单操作步骤

2023-11-01

1.导包

将EnhancedScroller v2.15.6.unitypackage导入到场景中

2.创建画布

创建一个canvas画布

3.创建Scroll

在画布下创建一个UI->Scroll View,将组建内Scrollbar Horizontal/Vertical两个滑动条删除,删完就是这样

4.准备脚本

需要准备三个脚本,Manager、CellView、Data,

介绍

  1. Manager脚本负责将预制体(CellView)和数据(Data)通过什么方式去结合呈现

  2. CellView脚本负责把数据写入预制体对应的位置(例如预制体的子物体有一个Text,该脚本负责把数据写入这个Text.text上)

  3. Data脚本负责定义数据类型

Manager脚本

查看脚本RankingManager.cs

需要继承MonoBehaviour(可以将脚本挂在到场景物体上)与实现IEnhancedScrollerDelegate(需要实现3个方法)

第一步,创建成员

    // 数据列表(Data就是上面三脚本之一)
    private SmallList<Data> _data;

    // 列表控制器(插件的核心控制器)
    public EnhancedScroller scroller;

    // 列表元素预制体
    public EnhancedScrollerCellView cellViewPrefab;

第二步,初始化脚本

    void Start()
    {
        // 控制器绑定(核心控制器需要一个委托脚本,也就是Manager脚本)
        scroller.Delegate = this;

        // 装载数据(自定义方法,用于为列表_data添加数据并渲染)
        LoadData();
    }

第三步,添加数据

 	/// <summary>
    /// 给list添加具体的数据
    /// </summary>
    private void LoadData()
    {
        // new 一个具体的list
        _data = new SmallList<Data>();
        // 装填数据
        for (var i = 0; i < 30; i++)
        {
            _data.Add(new Data()
            {
                
            });
            // 测试打印看是否成功
            Debug.Log(_data[i].ranking);
        }

        // 刷新数据
        scroller.ReloadData();
    }

第四步,实现接口

	/// <summary>
    /// 一个重写,告诉滚动器应该分配空间的单元格条数。这应该是_data数据的长度
    /// </summary>
    /// <param name="scroller"></param>
    /// <returns></returns>
    public int GetNumberOfCells(EnhancedScroller scroller)
    {
        return _data.Count;
    }

    /// <summary>
    /// 这将告诉滚动器给定单元格的大小。
    /// 单元格条数可以是任何大小,不需要是统一的。
    ///     对于垂直滚动条,单元格的大小将是高度。
    ///     对于水平滚动条,单元格的大小将是宽度。
    /// </summary>
    /// <param name="scroller"></param>
    /// <param name="dataIndex"></param>
    /// <returns></returns>
    public float GetCellViewSize(EnhancedScroller scroller, int dataIndex)
    {
        // 这个是根据数据索引值的余数来的,要不是长30,要不长100
        // return (dataIndex % 2 == 0 ? 30f : 100f);
        return 20f;
    }

    /// <summary>
    /// 获取新的数据(上划时候,滚动器会将最上面的CellView移动到最下面,此时需要这个方法为CellView提供数据)
    /// </summary>
    /// <param name="scroller"></param>
    /// <param name="dataIndex"></param>
    /// <param name="cellIndex"></param>
    /// <returns></returns>
    public EnhancedScrollerCellView GetCellView(EnhancedScroller scroller, int dataIndex, int cellIndex)
    {
        // 谁出了超出那个框了,获取谁的预制体
        ScoreCellView cellView = scroller.GetCellView(cellViewPrefab) as ScoreCellView;

        // 名字切换一下
        cellView.name = "Cell " + dataIndex.ToString();

        // 写入一个新的数据
        cellView.SetData(_data[dataIndex]);

        // 把装好的cellView返回
        return cellView;
    }

CellView脚本

查看脚本 ScoreCellView.cs

需要继承EnhancedScrollerCellView

第一步,准备需要绑定的对象

public Text name;

第二步,写入这个对象

public void SetData(Data data){
    name.text = data.name;
}

Data脚本

查看脚本 ScoreData.cs

无继承,只需要准备对应的数据类型即可

public string name;

5.绑定脚本

第一步,将EnhancedScroller脚本(插件主脚本)挂在到ScrollView上(也就是和ScrollRect组件一个对象上)

这个脚本直接 add Component 搜

第二步,将CellView挂在到需要批量显示的预制体上,并绑定对应的对象

第三步,将挂载好的预制体放到资源文件夹中

第四步,将Manager脚本挂载到一个空物体上(这个空物体决不能销毁),并且将主控制器(EnhancedScroller脚本对象)拖入到Scroller中,将预制体(ScoreClip/CellView)拖入到Cell View Prefab中

至此,步骤基本完毕,点击运行游戏运行

三脚本代码

链接: https://pan.baidu.com/s/1lqPwmaCy7KKUzFL9y3_XTA?pwd=mb5n 提取码: mb5n 复制这段内容后打开百度网盘手机App,操作更方便哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity无限列表插件-EnhancedScroller 简单操作步骤 的相关文章

  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • UnityVR--组件3--Line Renderer--线性渲染

    目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1 使用Line Renderer绘制线段 应用1实现 使用系统工具或自定义工具绘制线段 应用2 Trail Render
  • Unity之获取游戏物体对象或组件的几个方法

    文章目录 前言 通过物体名称获取对象 GameObject Find Transform Find 通过物体标签获取对象 GameObject FindWithTag GameObject FindGameObjectWithTag Gam
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • Unity旋转以及万向锁问题

    我之前研读了一些关于unity旋转相关的博客 一直想抽个时间写个总结 但是由于实习太忙一直没有写 趁着今天请了假晚上有时间把这段时间一些学习心得写出来 Unity inspector面板中的Rotation 在unity中 想必大家最先接触
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • unity3d切换场景Application.LoadLevel(1)含义

    Application LoadLevel 1 场景ID
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

    后续会出UGUI Json的版本 敬请期待 游戏开发中经常会出现药品商店 实际操作与武器商店类似 甚至根据实际情况可以简化设置 废话不多说 直接上代码 药品商店的源码 using System Collections using Syste
  • 游戏开发之常见操作梳理——武器装备商店系统(NGUI版)

    游戏开发中经常出现武器商店 接下来为你们带来武器装备商店系统的具体解决办法 后续出UGUI Json版本 敬请期待 武器道具的具体逻辑 using System Collections using System Collections Ge
  • 游戏开发常见操作梳理之角色选择一

    进入游戏后 我们经常会进入角色选择的界面 通常是左右两个按钮可以更改角色供玩家选择 对于这种界面我们通常使用数据持久化将角色信息存储起来 接下来的笔记中 我将使用自带的数据持久化系统对其进行操作 实现角色的选择页面 后续会更新xml系列的文
  • 游戏开发常用实践操作之按动任意键触发

    接下来一些笔记会对于一些大大小小的实践操作进行记录 希望对你有所帮助 在游戏中 我们经常会遇到一些按动任意键触发的操作 接下来展示核心代码 以下是对于Unity中的操作 使用的UI是NGUI 对于核心操作没有影响 你可以自己置换 void

随机推荐

  • 分布式复习1~3章

    参考 学校ppt 整体 爹 https zhuanlan zhihu com p 341814546 时间和时钟 https blog csdn net fragile98 article details 113695334 分布式系统的时
  • 利用ESP8266模块实现远程用手机控制开关

    利用ESP8266模块实现远程用手机控制开关 文章目录 前言 一 ESP8266是什么 二 使用步骤 1 密钥与核心库 2 连接Wi Fi 3 手机端控制函数 总结 插入链接与图片 列表 前言 随着万物联网的时代到来 通过互联网来控制已经越
  • AIGC 的概念与内涵

    导读 目前 对AIGC这一概念的界定 尚无统一规范的定义 国内产学研各界对于AIGC的理解是 继专业生成内容 ProfessionalGeneratedContent PGC 和用户生成内容 UserGeneratedContent UGC
  • 多线程-线程通信(wait-notify,await-single,park-unpark)

    在多线程场景中 如有些线程需要依赖另外线程的结果而继续执行 如多个线程处理请求 有的处理的快有点慢 快的需要等待慢的线程结果一起提交执行结果 都会涉及到线程间的通信 就是A线程告知B线程处理的结果是怎么样 B线程再执行对应逻辑 通信比较经典
  • Laravel从入门到实践

    Laravel从入门到实践 版本 Laravel版本 8 75 0 安装与配置 使用Docker 安装项目 curl s https laravel build betterlife bash 启动项目 cd betterlife vend
  • 笔记:RTSP在线视频流资源地址

    1 在线视频流地址 rtsp wowzaec2demo streamlock net vod mp4 BigBuckBunny 115k mov 2 播放软件 vlc 下载地址 Downloads VideoLAN 使用如下 打开媒体 打开
  • 股票集合竞价规则详解,什么是集合竞价?集合竞价技巧分析

    股票集合竞价规则是每一个新入股市的朋友都应该首先掌握的一个知识要点 然而很多新入市的朋友对于股票集合竞价规则了解的是很少的 今天为了帮助更多的朋友掌握这个规则 笔者作为金融市场的铁杆粉丝 从三年前开始 就对金融市场的理论和实践方面的认识逐渐
  • 【空气检测仪专题】9.画PCB图

    空气检测仪专题 9 画PCB图 移植了EmWin并写了demo程序 效果如下 很久没有画PCB图了 慢慢画呗
  • 北大网站服务器关闭,北京大学网络服务

    nbsp 1 如何在Windows2000环境下配置静态IP地址 第一步 选择 控制面板 选择 网络和拨号连接 第二步 鼠标右键选择 本地连接 或者相应的网卡名称 选择 属性 第三步 选择 TCP IP协议 第四步 配置相应的参数 IP地址
  • 查看SELinux状态&关闭SELinux

    1 查看SELinux状态 1 1 getenforce getenforce 命令是单词get 获取 和enforce 执行 连写 可查看selinux状态 与setenforce命令相反 setenforce 命令则是单词set 设置
  • Qt获取当前时间(超详细)

    Qt获取当前时间 超详细 转载自别的网站 时间日期是经常遇到的数据类型 Qt 中时间日期类型的类如下 QTime 时间数据类型 仅表示时间 如15 23 13 QDate 日期数据类型 仅表示日期 如2017 4 5 QDateTime 日
  • unity timeline 用脚本添加事件运用

    ExposedReference
  • 变长模板:模板参数包和函数参数包

    模板参数包 我们先看看变长模板的语法 以tuple为例 template
  • Qt 菜单背景设置颜色 菜单设置颜色

    菜单红色 菜单栏紫色 this gt setStyleSheet QMenu item selected background color ff0000 QMenuBar background color ee00ff 紫色 看效果 菜单背
  • 什么是vue生命周期?

    vue生命周期是指vue实例对象从创建之初到销毁的过程 vue所有功能的实现都是围绕其生命周期进行的 在生命周期的不同阶段调用对应的钩子函数实现组件数据管理和DOM渲染两大重要功能 vue生命周期的这八个阶段 1 创建前 beforeCre
  • ut本地系统服务器,mysql本地服务器地址

    mysql本地服务器地址 内容精选 换一换 云数据库RDS服务提供使用内网 公网和数据管理服务 Data Admin Service 简称DAS 的连接方式 VPC 虚拟私有云 Virtual Private Cloud 简称VPC ECS
  • R语言中向量和矩阵简单运算

    一 向量运算 向量是有相同基本类型的元素序列 一维数组 定义向量的最常用办法是使用函数c 它把若干个数值或字符串组合为一个向量 1 R语言向量的产生方法 gt x lt c 1 2 3 gt x 1 1 2 3 2 向量加减乘除都是对其对应
  • IDEA默认Maven设置

    IDEA是自带Maven的 但版本有点低 故自己下了新版的Maven 但每次使用创建或者导入Maven项目的时候 IDEA都会使用系统默认的Maven 如下图所示 此时 如果想默认使用自定义安装的Maven 需要点击Maven home d
  • CentOS7 安装MySQL 图文详细教程

    目录 一 检查是否已经安装过MySQL 方法一 方法二 二 安装MySQL 1 将压缩包传到服务器 2 解压文件 3 重命名解压后的文件 4 检查是否有mysql用户组和mysql用户 5 进入mysql目录 更新权限
  • Unity无限列表插件-EnhancedScroller 简单操作步骤

    1 导包 将EnhancedScroller v2 15 6 unitypackage导入到场景中 2 创建画布 创建一个canvas画布 3 创建Scroll 在画布下创建一个UI gt Scroll View 将组建内Scrollbar