unityscrollview生成大量_superscrollviewforUGUI的一些使用心得

接触这个插件也有差不多半年了,这段时间都是跟这个插件做的UI打交道,所以记一下相关的使用心得做备忘。

这个插件主要由三个脚本构成,分别是ListItemData(挂载在要展示的物体预制体身上的,物体对应的属性,初始化字段等均可以写在这里)(另,若存在一行有多个物体这样的情况,则需要两个ItemData,一个是单独的物体,另一个则是代表一行的物体,行物体初始化时调用行内所有物体的初始化方法,其他的类似),Picker(生成和排序物体的相关方法脚本,可以写入UI相关脚本中整合),data(数据的来源,也就是生成初始数据列表的地方,可以写入对应的data脚本中整合。)

使用时,只需要把LoopListView2挂在ScrollRect组件所在的物体上即可(一定要在同一个物体下,否则无法获取到)。然后将要重复显示使用的预制体拖入ItemPrefabList中即可。(拖到哪个里?就一个能拖进去的啊!)

这里面相关的参数大意如下:

ItemPadding:表示物体之间的间隔。若填0就贴在一起。

X/YposOffset:表示物体排序的偏移值。如果是上下滚动,这里显示的是X,否则显示Y。填0表示居中,否则会有偏移。

InitCreateCount:暂时不清楚有什么用……说明书里写表示最开始初始化的数量,但目前来看填几都差别不大。

下面的SupportScrollBar勾上后,可以支持滚动条。

ItemSnapEnable勾上后,将允许选中指定的物体并特殊显示。(如滚动时最中间的那一个物体始终放大表示被选中)下面的ItemSnapPivot和ViewPortSnapPivot可以调整选中目标的位置和偏移,具体可以自己调整,我不太清楚如何表达比较合适……

最下面的ArrangeType表示显示方式,依次是从上到下、从下到上、从左到右、从右到左。

设置好之后,将Picker脚本挂载到相应物体上(也可以不挂直接整合进UI中),Picker脚本主要有以下几个注意的地方。

1、需要一个生成物体的方法OnGetItemByIndex,具体可以参考范例中的写法。通常就是给物体赋一个编号,根据编号从对应容器里取出数据,塞给物体赋值,然后初始化,最后返回这个物体。

2、最大显示的数量、当前选中的目标index等也都在此脚本中声明和使用。

3、还需要一个LoopListView2的对象,将之前设置好的组件物体拖入,用来调用里面的方法。

弄好之后,在Start里面执行以下函数:(如果整合进UI里,就在UI初始化中执行)

LoopListView.InitListView(int,func)(前者表示这个表最多拥有多少个物体,如果填-1则表示无穷无尽,后者表示生成这个物体使用的方法,把1中的方法填进去即可)

4、需要刷新显示的物体数据时,直接修改容器内的数据,再调用RefreshAllShownItem方法即可。如果涉及增删操作,则需要先调用SetListItemCount方法调整最大值,否则会出现BUG。

5、给名为mOnSnapNearestChanged的Action指定方法,则当选中物体变化时就会调用该方法。(对选中物体特殊处理一般就在这里处理)

6、如果列表是不循环的,则首尾的物体不能被选中(因为无法居中)。这时候可以考虑做两个空白的物体替代物体,并修改对应代码引用。如果没有居中的需求,可以摒弃掉自带的选中,重写一个选中的方法。

7、MovePanelToItemIndex方法是直接瞬移到指定物体,而SetSnapTargetItemIndex方法则是滚动到指定物体处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用的组件:ckeditor

老牌Web文本编辑器,无需多言。 官网地址:http://ckeditor.com/转载于:https://www.cnblogs.com/xusweeter/p/6098942.html

mybatis 配置 mysql连接池_spring 5.x 系列第5篇 —— 整合 mybatis + druid 连接池 (xml配置方式)...

项目目录结构1. 导入依赖创建 maven 工程,除了 Spring 的基本依赖外,还需要导入 Mybatis 和 Druid 的相关依赖:org.springframeworkgroupId>spring-jdbcartifactId>${spring-base-version}version>dependency>mysqlgroupId>my…

noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T21——T25

T21 二维数组右上左下遍历 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组。 输入 输入的第一行上有两个整数,依次为row和col。余下有row行,每行包含col个整数&#…

mysql memcache redis_redis,mysql,memcache的區別與比較,redis兩種數據存儲持久化方式

redis與mysql比較區別:mysql中一個中小型的網絡數據庫,比oracle和sqlserver小, 但是並發能力遠超過acess這樣的桌面數據庫;redis是一個內存鍵值數據庫,支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫。redi…

Java学习笔记三——数据类型

前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用;指定类型的变量只能接受预支匹配的值。这意味着每一个变量和表达式都有一个在编译时就确定的类型。 Java数据类型分为两大…

word可以直接导入mysql嘛_如何把word文档导入到数据库中——java POI

本文方法借鉴于https://www.cnblogs.com/ljysy/p/10574197.html在经过朋友的指导下,在处理文档的方式上有所不同。我的数据库使用的是SQL server,这篇博客将不介绍如何将数据存储进数据库中,只进行java POI处理文档数据的介绍,在处…

metinfo mysql off_利用Sqlmap测试MetInfo企业网站管理系统MySql注入

上次叉叉讲了Sqlmap简单注入(access数据库)教程,这次咱说说MySql数据库MetInfo,是一款强大的企业网站管理系统,采用PHPMysql架构。叉叉下载的是MetInfo 5.1.5的免费版本,咱不是大拿,不会分析源码,直接丢到W…

IOS的七种手势

今天为大家介绍一下IOS 的七种手势,手势在开发中经常用到,所以就简单 通俗易懂的说下, 话不多说,直接看代码: // 初始化一个UIimageViewUIImageView *imageView [[UIImageView alloc]initWithFrame:CGRectMake(100, 1…

mysql获取后一天_mysql获取当前时间,前一天,后一天

今天是2016年08月01日。date_sub(2016-08-01,interval 1 day) 表示 2016-07-31date_sub(2016-08-01,interval 0 day) 表示 2016-08-01date_sub(2016-08-01,interval -1 day) 表示 2016-08-02date_sub(curdate(),interval 1 day) 表示 2016-07-31date_sub(curdate(),interval -1…

c++获取sqlite3数据库表中所有字段的方法

常用方法: 1.使用sqlite3_get_table函数 2.获取sqlite创建表的sql语句字符串,然后进行解析获取到相应的字段 3.采用配置文件的方式,将所有字段名写入配置文件 方法1:使用sqlite3_get_table函数 代码: char *dbname “…

python sql语句生成_python Django 生成sql语句

class TestModel(models.Model):Namemodels.CharField(max_length64,blankTrue)>>> from django.core.management.color import no_style#Style是用来输出语句时着色的>>> from django.db import connection>>> from django.db.backends import cre…

Oozie的架构

Oozie的架构图,如下: 从oozie的架构图中,可以看到所有的任务都是通过oozie生成相应的任务客户端,并通过任务客户端来提交相应的任务。 继续。。。 转载于:https://www.cnblogs.com/zlslch/p/6117705.html

mysql如何做计划任务_简单的mysql 过程计划任务

首先讲讲过程是什么东西, 过程差不多就是SQL用的java之于方法.把一段sql做成过程后一个简单的调用就可以批量执行这些sql,很方便.其实就像java后台写个执行复杂sql的方法,你只是把这段sql存到数据库里了而已.mysql里面有"过程"和"函数"两个概念, 基本上前者…

Linux的#和$区别

【#】代表 root权限【$】代表普通用户 如果更改了/etc/profile , 或~/.bashrc等文档,可以用任何符号来代替它们。 linux窗口下的【rootlocate~】其中的【~】代表代表用户的家目录(root为/root,一般user则为/home/username)&#x…

python贴吧顶贴_python实现贴吧顶贴机器人

项目目录:– url.txt:多个需要顶起的帖子地址。– reply:多条随机回复的内容。–selenium:浏览器自动化测试框架。首先,我们先使用pip完成selenium的安装。接着,导入pyautogui自动控制鼠标的库。示例代码:p…

Confluence部署攻略 [转]

一、软件介绍 AtlassianConfluence(简称Confluence)是一个专业的wiki程序。它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享。Confluence不是一个开源软件,非商业用途可以免费使用。 Confluence使用简单&…

对自己的忠告

人生的路上有许许多多的十字路口,迷茫、孤独、失败在所难免,不管自己再怎么改变,也不要忘记那个我。对自己的忠告。 难是多做的理由,而不是不做的理由。当你以为看透事情的本质,或许你只不过是盒子中的盒子。一路上&am…

arp欺骗技术

ARP欺骗技术-获取内网目标IP访问图片!简介:ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析成对应的MAC地址。要求: 虚拟机 Kali linux系统 1--命令…

java 读取project_java project 和 java web project 获取路径问题

java project中如何获得相对路径(编译后的目录是在/bin目录下)(一般图片 这些目录放在 项目目录下,与src同级)在static方法中,用String path Test.class.getResource("").getPath();在非static方法中,用String path this.getClas…

前端插件介绍

1.JQuery EasyUI http://www.jeasyui.net/demo/380.html,各种示例代码可以修改使用,简化开发流程。 http://www.jeasyui.net/download/,下载后能查看各种html的源码,引入它的css、js、jquery,然后拿过来demo里的代码就…