Unity照片墙插件UnityUGUIPhotoWall

UnityUGUIPhotoWall一款结合DoTween做的照片墙效果插件

效果如下:

 使用示例:

using DG.Tweening;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class MyTest : MonoBehaviour
{public RectTransform prefab;int row = 10;       // 行int column = 15;        // 列//第一张照片的位置int startXPos = 60;    int startZPos = -100;// 照片 X 轴上的间距(Image 目前 (50,50),所以大于 50 照片间即可有间距,Min 和 Max 可以设置不同)float distanceRandomMinX = 60;float distanceRandomMaxX = 60;// 照片 Y 轴上的间距(Image 目前 (50,50),所以大于 50 照片间即可有间距,Min 和 Max 可以设置不同)float distanceRandomMinY = 60;float distanceRandomMaxY = 60;// 照片移动的距离,根据自己的 Canvas 画布和 Image 大小适配float initMoveDistance = 1000;// 选中照片时,放大的倍数float enlargeSize = 5;// 选中照片时,周围照片的改变范围float radiateSize = 220;// 照片集合列表List<List<RectTransform>> goList;// 照片和位置字典Dictionary<RectTransform, Vector2> itemPosDict;// 选中照片,照片变动集合List<RectTransform> changedItemList;// Use this for initializationvoid Start(){goList = new List<List<RectTransform>>();itemPosDict = new Dictionary<RectTransform, Vector2>();changedItemList = new List<RectTransform>();CreateGos();}void CreateGos(){// 生成所有物体,并添加到字典for (int i = 0; i < row; i++){List<RectTransform> gos = new List<RectTransform>();goList.Add(gos);float lastPosX = 0;for (int j = 0; j < column; j++){// 生成照片,并设置照片名称,以及父物体RectTransform item = (Instantiate(prefab.gameObject) as GameObject).GetComponent<RectTransform>();item.name = i + " " + j;item.transform.SetParent(transform);// 设置 照片的初始位置,以及最终运动到的位置Vector3 startPos = new Vector3(Random.Range(distanceRandomMinX, distanceRandomMaxX) + lastPosX, startZPos - i * Random.Range(distanceRandomMinY, distanceRandomMaxY));item.anchoredPosition = startPos;Vector3 endPos = new Vector3(startPos.x - initMoveDistance, startZPos - i * Random.Range(distanceRandomMinY, distanceRandomMaxY));// DOTween 开始延迟动画,最后一行先开始运动,依次网上Tweener tweener = item.DOAnchorPosX(endPos.x, Random.Range(1.8f, 2f));  // 缓动到目标位置tweener.SetDelay(j * 0.1f + (row - i) * 0.1f);      // 延时tweener.SetEase(Ease.InOutBounce);           // 缓动效果// 适配 Canvas 的 Render Mode 的任何形式,保证显示正常item.transform.localPosition = new Vector3(item.transform.localPosition.x, item.transform.localPosition.y, 0);item.transform.localScale = Vector3.one;// 修改 Image下的 Text 文本信息item.transform.GetChild(0).GetComponent<Text>().text = item.name;//添加到集合item.gameObject.SetActive(true);gos.Add(item);itemPosDict.Add(item, endPos);// 更新当前 X 轴点信息lastPosX = item.anchoredPosition.x;}}}/// <summary>/// 鼠标进入的事件/// </summary>/// <param name="item">当前的UI物体</param>public void OnMousePointEnter(RectTransform item){// 缓动改变中心物体(选中照片)尺寸item.DOScale(enlargeSize, 0.5f);Vector2 pos = itemPosDict[item];// 更新集合changedItemList = new List<RectTransform>();// 遍历字典,添加扩散物体到集合foreach (KeyValuePair<RectTransform, Vector2> i in itemPosDict){// 变动范围内的 照片集合if (Vector2.Distance(i.Value, pos) < radiateSize){changedItemList.Add(i.Key);}}// 缓动来解决扩散物体的动画for (int i = 0; i < changedItemList.Count; i++){// 方向上变动照片集合Vector2 targetPos = itemPosDict[item] + (itemPosDict[changedItemList[i]] - itemPosDict[item]).normalized * radiateSize;changedItemList[i].DOAnchorPos(targetPos, 0.8f);}}/// <summary>/// 鼠标移开的事件/// </summary>/// <param name="go"></param>public void OnMousePointExit(RectTransform go){// 缓动恢复中心物体尺寸go.DOScale(1, 1);// 缓动将扩散物体恢复到初始位置for (int i = 0; i < changedItemList.Count; i++){changedItemList[i].DOAnchorPos(itemPosDict[changedItemList[i]], 0.8f);}}/// <summary>/// 鼠标按下的事件/// </summary>/// <param name="go"></param>public void OnMousePointDown(RectTransform go){// Image 变色go.gameObject.GetComponent<Image>().color = Color.red;}}

BaseInput用来检测鼠标输入事件

using UnityEngine.UI;namespace UnityEngine.EventSystems
{/// <summary>/// Interface to the Input system used by the BaseInputModule. With this it is possible to bypass the Input system with your own but still use the same InputModule. For example this can be used to feed fake input into the UI or interface with a different input system./// </summary>public class BaseInput : UIBehaviour{/// <summary>/// Interface to Input.compositionString. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual string compositionString{get { return Input.compositionString; }}/// <summary>/// Interface to Input.imeCompositionMode. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual IMECompositionMode imeCompositionMode{get { return Input.imeCompositionMode; }set { Input.imeCompositionMode = value; }}/// <summary>/// Interface to Input.compositionCursorPos. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual Vector2 compositionCursorPos{get { return Input.compositionCursorPos; }set { Input.compositionCursorPos = value; }}/// <summary>/// Interface to Input.mousePresent. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual bool mousePresent{get { return Input.mousePresent; }}/// <summary>/// Interface to Input.GetMouseButtonDown. Can be overridden to provide custom input instead of using the Input class./// </summary>/// <param name="button"></param>/// <returns></returns>public virtual bool GetMouseButtonDown(int button){return Input.GetMouseButtonDown(button);}/// <summary>/// Interface to Input.GetMouseButtonUp. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual bool GetMouseButtonUp(int button){return Input.GetMouseButtonUp(button);}/// <summary>/// Interface to Input.GetMouseButton. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual bool GetMouseButton(int button){return Input.GetMouseButton(button);}/// <summary>/// Interface to Input.mousePosition. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual Vector2 mousePosition{get { return Input.mousePosition; }}/// <summary>/// Interface to Input.mouseScrollDelta. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual Vector2 mouseScrollDelta{get { return Input.mouseScrollDelta; }}/// <summary>/// Interface to Input.touchSupported. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual bool touchSupported{get { return Input.touchSupported; }}/// <summary>/// Interface to Input.touchCount. Can be overridden to provide custom input instead of using the Input class./// </summary>public virtual int touchCount{get { return Input.touchCount; }}/// <summary>/// Interface to Input.GetTouch. Can be overridden to provide custom input instead of using the Input class./// </summary>/// <param name="index">Touch index to get</param>public virtual Touch GetTouch(int index){return Input.GetTouch(index);}/// <summary>/// Interface to Input.GetAxisRaw. Can be overridden to provide custom input instead of using the Input class./// </summary>/// <param name="axisName">Axis name to check</param>public virtual float GetAxisRaw(string axisName){return Input.GetAxisRaw(axisName);}/// <summary>/// Interface to Input.GetButtonDown. Can be overridden to provide custom input instead of using the Input class./// </summary>/// <param name="buttonName">Button name to get</param>public virtual bool GetButtonDown(string buttonName){return Input.GetButtonDown(buttonName);}}
}

插件下载地址:https://download.csdn.net/download/Highning0007/87337407

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

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

相关文章

unity 内置渲染管线 效果调整工作流程

unity 内置渲染管线 效果调整工作流程 本次工作流程使用的是unity 2021.3.0f1&#xff0c;主要针对表现效果较差的webgl的效果调整&#xff0c;同样适用于pc端的效果调整&#xff0c;只是在shader的表现上有所差异。&#xff08;不涉及烘焙内容&#xff09; webgl效果展示&…

设计师都在用的主流效果图渲染器,看看哪款适合你?

现在市面上总共有十几款渲染器&#xff0c;刚入行的设计师可能对各个渲染器的特点不是很了解。今天就和大家聊一聊设计师都在用的主流效果图渲染器&#xff0c;看看哪款适合你&#xff1f; 1.V-Ray V-Ray是Chaos Group旗下的一款高质量渲染软件。结合了光线跟踪和光能传递&…

渲染效果图哪家好?2022最新实测(三)

工作的日子总是繁忙的&#xff0c;每天不停地赶图画图&#xff0c;加班到凌晨3&#xff0c;4点是常有的事&#xff0c;有时候休息几小时又忙着去上班了&#xff0c;晕头转向&#xff0c;所以时隔这么久我又来测试了&#xff0c;这次测的都是出现很久的平台&#xff0c;E渲和瑞云…

max渲染精美效果图的几个技巧。

max渲染精美效果图的几个技巧 1.将三大面五大调子的素描规律与构成物颜色的三大要素联系起来&#xff0c;引出以下公式&#xff1a; 1.物体的高光-光源颜色。 2.物体受光表面-固有色光源颜色。 3.中调-固有颜色。 4.明暗交接线-固有深色环境颜色。 5.反射-深色环境颜色。 6.投影…

Unity3D热更设计:一款基于 HybridCLR的C#热更方案

在这篇文章之前&#xff0c;可以转到我的这两篇博客&#xff1a;C#热更方案 HybridCLR尝鲜&#xff1a;Windows及Android打包、超详细的Unity3D热更新框架&#xff0c;附示例链接&#xff0c;小白也能看的懂_鹿野素材屋的博客-CSDN博客_热更新框架 这两篇博客看完后&#xff0c…

VRay渲染器之家装户型渲染实战记录

Vray渲染器之家装户型渲染实战记录 简要介绍&#xff1a; 首先思路是分为客户端、服务器、中间件三大块。先从客户端传入json文件给包括mesh&#xff0c;灯光&#xff0c;模型的中间件&#xff0c;其中mesh和灯光可以用已有的API调用服务器的内容&#xff0c;然后调用模型中包…

【Unity 实用插件篇】| 可视化图表插件XCharts (折线图、柱状图、饼图等)详细教学

前言【Unity 实用插件篇】| 可视化图表插件XCharts (折线图、柱状图、饼图等)详细教学一、XCharts介绍1.1 特性1.2 相关网站链接1.3 效果展示二、XCharts导入三、XCharts快速使用3.1 添加一个简单图表3.2 添加多个Seire3.3 给图表添加其他组件3.4 添加Serie组件,如给折线图区域…

食住玩|3dmax效果图大师们怎么用CR去测试效果图的渲染参数?

【本文导航】 本文所示范的步骤&#xff0c;只有5个&#xff0c;且皆有截图明示。 【解说全引导进入视频教程】 3dmax效果图CAD施工图进阶 ———————50分钟速成效果图全流程不教学更快进入视频教程————— 在corona渲染器的设置面板中&#xff0c;应该如何设置测试…

食住玩3dmax|室内设计师如何用CORONA设置成品效果图出大图的渲染参数?

【本文导航】 1、简介CR&#xff1b;2、转换CR材质方法&#xff1b;3、大图CR参数2个步骤&#xff1b;4、往期回顾。 【解说全引导进入视频教程】 3dmax效果图CAD施工图进阶 ———————50分钟速成效果图全流程不教学更快进入视频教程————— 【简介CR】前面几节课&a…

效果图渲染的几大实用技巧

效果图渲染是建筑、室内、景观、产品设计等行业中非常重要的一环。一个高质量的效果图可以让客户更好地了解和感受设计方案&#xff0c;提高设计师的竞争力。但是渲染效果的好坏和速度都取决于设计师的技巧和工具。本文将介绍几大实用技巧&#xff0c;帮助设计师更好地进行效果…

C语言实现双色球案例

双色球 1.案例描述 双色球是中国福利彩票目前的一种玩法&#xff0c;并非赌博&#xff0c;其彩票投注区分为红色球号码区和蓝色球号码区&#xff0c;每注投注号码由6个红色球和1个蓝色球号码组成。红色球号码从1-33中选择&#xff0c;蓝色球号码从1-16中选择。每期开出的红色…

历史数据双色球小工具

Python可视化界面小工具&#xff0c;可自定义历史期数&#xff0c;历史双色球数据&#xff0c;打印结果、写入excel表格、并进行简单的结果分析&#xff1b; 1、工具效果图如下图所示&#xff1a; 2、生成Excel表格数据格式如下图所示&#xff1a; 3、完整代码如下&#xff1a…

Python采集双色球历史开奖信息,看看哪个号中奖概率更大

目录标题 前言知识点:开发环境:基本流程:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 知识点: 爬虫基本流程 requests的使用 动态数据抓包 开发环境: 解释器: python 3.8 编辑器: pycharm 2022.3 requests >>> pip install requests 第三…

华南理工大学计算机/软件 复试 经验贴整理

文章目录 最新更新2023/02/24 &#xff1a; 我能提供&#xff1f;&#xff08;21&#xff0c;22届复试全流程&#xff0c;如何找复试资料&#xff0c;一些学习技巧&#xff0c;前人经验&#xff0c;闲聊&#xff0c;会就答...&#xff09;2020年2019年其它资料来源 最新更新202…

北京交通大学计算机考研02102、02103复试经验分享

【2023考研复试重要时间节点】 2023年3月20号左右计算机学院公布复试线与复试名单。2023年3月底参加复试。2023年4月初公布拟录取名单。 【复试解读】 【进入复试数据】 【1】新冠疫情之前&#xff08;20、21、22考研&#xff09;&#xff0c;北交计算机复试一直都是包括线下…

西北工业大学网络安全考研复试经验

初试直接看我师姐的文章吧&#xff0c;传送门&#xff1a;西北工业大学网络空间安全考研经验分享_崔啊是个幸福的人的博客-CSDN博客_西北工业大学网络安全考研报考学校&#xff1a;西北工业大学学院&#xff1a;网络空间安全专业&#xff1a;847初试分数&#xff1a;391英语&am…

研究生计算机专业知识复试面试常见问题

研究生计算机专业复试面试常见问题 操作系统1. 进程和线程区别和联系2. 常见的调度算法3. 死锁的产生和解决4. 虚拟内存&#xff0c;页面置换算法5. 磁盘调度 数据结构1. 常见的排序算法过程和时间复杂度&#xff0c;空间复杂度2. 深度搜索和广度搜索深度搜索(DFS)广度搜索&…

计算机网络考研复试速成 - 知识点精炼 - 背诵版

计算机网络复试速成 针对于计算机考研复试 - 计算机网络 &#xff0c;删除了很多初试中关于 计算、冗余 的内容&#xff0c;把复习中心放在 高频知识点 (偏向概念) &#xff0c;希望可以节约准研究生们的复习时间&#xff01;大家可以放心食用&#x1f356;&#x1f356;&#…

陕西师范大学计算机考研复试,复试干货 | 陕西师范大学考研复试经验分享贴...

本文为陕西师范大学应用心理学方向复试经验&#xff0c;其它方向复试流程与其基本一致&#xff0c;可放心参考学习~ヾ() 一、陕师大复试分数要求 每年的情况有一些不同&#xff0c;2017年以前进入复试分数线浮动在350-360分之间&#xff0c;2018年题稍难一些&#xff0c;复试分…

南师大教育技术学初试复试调剂经验分享

南师大教育技术学考研经验分享 1 概述... 1 2 初试准备经验... 2 2.1 政治部分... 2 2.2 英语部分... 2 2.3 c语言和web部分... 2 2.4 数据结构部分... 3 2.5 教学设计部分... 3 2.6 初试资料网盘分享... 3 2.7 当你不想学习时怎么办... 3 3 复试调剂经验... 3 3.1 复试和调剂资…