当前位置: 首页 > news >正文

书画网站源码宜昌市建设信息网站

书画网站源码,宜昌市建设信息网站,网易云播放器做网站播放,怎样下载做网站的软件前言 Unity3d实现的数字沙盘系统中#xff0c;总有一些图片或者图片列表需要点击后弹窗显示大图#xff0c;这个弹窗在不同尺寸分辨率的图片查看处理起来比较麻烦#xff0c;所以#xff0c;需要图片能够根据容器的大小自适应地进行缩放#xff0c;兼容不太尺寸下的横竖图…前言 Unity3d实现的数字沙盘系统中总有一些图片或者图片列表需要点击后弹窗显示大图这个弹窗在不同尺寸分辨率的图片查看处理起来比较麻烦所以需要图片能够根据容器的大小自适应地进行缩放兼容不太尺寸下的横竖图的展示这个背景下考虑写一个公共的图片查看器能通过接口调起展示图片自动适配尺寸能自动判定高度或者宽度自适应。加入图片的平移和缩放功能以鼠标为中心点缩放查看图片细节。 效果 实现 基于Unity3d自带的UGUI系统来实现使用了DOTweenPro插件作为移动动画的实现核心思路就是将图片根据显示区域和尺寸做高度和宽度的自适应动态的计算高度和宽度进行设置。 单图查看器 根据之前的需求就是对单张图片的预览缩放、平移功能是基本操作核心是自适应高宽的实现。 缩放使用了之前博客实现的“Unity3d UGUI以鼠标位置点为中心缩放图片”,其核心思路就是根据鼠标位置计算图片的轴心点和对应于轴心点保持图片不移动的位置信息让后将这些数值动态的赋值给图片最后根据滚轮前后赋值缩放值。 窗体和图片的拖拽平移使用了之前博客实现的“Unity3d C#实现UGUI的界面可拖拽移动和选中置顶等功能”,其核心思路是依托于EventTrigger组件根据拖拽的事件StartDragDraging等和鼠标点击事件进行相关的界面的位置同步处理即可实现该功能。详情可以移步对应博客查看。 UI搭建 UI的搭建相对简单主要是使用了Image和mask组件用于图片显示和超出范围隐藏同时新增了图片重置和关闭按钮详情如下 动画 构想的动画是通过移动、缩放和透明度动画移动是通过点击图片或者按钮后窗口从触发位置移动到屏幕中间实现代码如下 /// summary/// 设置移入移出位置/// /summary/// param nameSender目标对象/paramprivate void SetMovePos(Transform Sender){ResetImage();if (Sender null){WindTran.localPosition MovePos Vector3.zero;}else{WindTran.position Sender.position;MovePos WindTran.localPosition;}WindTran.DOLocalMove(Vector3.zero, scaleDura);}而缩放的动画使用了DOScale来实现 WindTran.DOScale(Vector3.one * initScale, scaleDura); //修改默认缩放透明度动画是使用CanvasGroup组件来整体控制窗口 cg.DOFade(1, 0.3f);尺寸适应 尺寸的适应采用高宽比的思路如果宽度比 比 高度比高就适配宽度反之则适配高度 float WidRate sp.texture.width / ImgAreaSize.x; float HeightRate sp.texture.height / ImgAreaSize.y; ;//Screen.height;if (WidRate HeightRate) //适配宽度 {/*float Width ImgAreaSize.x;float Height (ImgAreaSize.x / sp.texture.width) * sp.texture.height ;*/showImgRect.sizeDelta new Vector2(ImgAreaSize.x, (ImgAreaSize.x / sp.texture.width) * sp.texture.height); } else //适配高度 {/*float Width ImgAreaSize.y / sp.texture.height * sp.texture.width;float Height ImgAreaSize.y;*/showImgRect.sizeDelta new Vector2(ImgAreaSize.y / sp.texture.height * sp.texture.width, ImgAreaSize.y); }调起接口 接口申明如下 /// summary/// 接口展示公共弹窗/// /summary/// param namesp预览的Sprite/param/// param nametran弹出的节点/param public void ShowImgWindow(Sprite sp, Transform tran null)传入预览的Sprite和弹出的节点(用于动画位置计算)即可调起窗口。 多图查看器 上面的单图查看器在使用起来有个问题面对图片列表使用该功能时多个图片查看操作较为繁琐比如同一个Scroll View下的图片查看起来需要点开、关闭、点开、关闭的操作这种情况下需要支持多张图片可以快速下一张上一张的操作。有此需求就需要支持多图查看的功能。多图的UI在单图的基础上新增了两个上一张/下一张的按钮: 多图切换 多图的逻辑是接口处发送多张图片调起多图查看器这时候将多张图放入到列表List中点击上一张、下一张时候直接切换对应的图片即可。 nowIndex idx; if (!isImg) {if (sprites null || sprites.Count 0 || idx 0 || idx sprites.Count)return;showImg.sprite sprites[nowIndex];float WidRate sprites[nowIndex].texture.width / ImgAreaSize.x;float HeightRate sprites[nowIndex].texture.height / ImgAreaSize.y; ;//Screen.height;if (WidRate HeightRate) //适配宽度{showImgRect.sizeDelta new Vector2(ImgAreaSize.x, (ImgAreaSize.x / sprites[nowIndex].texture.width) * sprites[nowIndex].texture.height);}else //适配高度{showImgRect.sizeDelta new Vector2(ImgAreaSize.y / sprites[nowIndex].texture.height * sprites[nowIndex].texture.width, ImgAreaSize.y);}NextBtn.SetActive(nowIndex sprites.Count - 1); }if (isImg) {if (images null || images.Count 0 || idx 0 || idx images.Count)return;showImg.sprite images[nowIndex].sprite;float WidRate images[nowIndex].sprite.texture.width / ImgAreaSize.x;float HeightRate images[nowIndex].sprite.texture.height / ImgAreaSize.y; if (WidRate HeightRate) //适配宽度{showImgRect.sizeDelta new Vector2(ImgAreaSize.x, (ImgAreaSize.x / images[nowIndex].sprite.texture.width) * images[nowIndex].sprite.texture.height);}else //适配高度{showImgRect.sizeDelta new Vector2(ImgAreaSize.y / images[nowIndex].sprite.texture.height * images[nowIndex].sprite.texture.width, ImgAreaSize.y);}NextBtn.SetActive(nowIndex images.Count - 1); }LastBtn.SetActive(nowIndex 0); ResetImage();大致逻辑如上图因为需要兼容Image和RawImage组件所以使用了 List和List两个列表。 调起接口 常用接口是将图片的父节点传入自动区分Image和RawImage组件 /// summary/// 接口展示公共弹窗/// 传入图片列表的父节点适用图片所有都父节点的一级子节点。/// /summary/// param nameparentTran父节点/param/// param nameidx图片的下标(默认0)/param/// param nametran弹出的节点/param public void ShowImgWindow(Transform parentTran, bool isTypeImg true, int idx 0, Transform tran null)调用代码如下 ImgShowListWindMgr.instance?.ShowImgWindow(sender.transform.parent, true,GetNodeActiveIndex(sender.transform), sender.transform);传入Image列表的接口 //接口展示公共弹窗/// summary/// Image列表预览图片/// /summary/// param nameimgListImage列表/param/// param nameidx图片的下标(默认0)/param/// param nametran弹出的节点/param public void ShowImgWindow(ListImage imgList, int idx 0, Transform tran null)传入Sprite列表的接口 //接口展示公共弹窗 /// summary /// Sprite列表预览图片 /// /summary /// param namespList Sprite列表/param /// param nameidx图片的下标(默认0)/param /// param nametran弹出的节点/param public void ShowImgWindow(ListSprite spList, int idx 0, Transform tran null)传入RawImage列表的接口 //接口展示公共弹窗 /// summary /// RawImage 列表预览图片 /// /summary /// param namerimgList RawImage 列表预览图片/param /// param nameidx图片的下标(默认0)/param /// param nametran弹出的节点/param public void ShowRawImgWindow(ListRawImage rimgList, int idx 0, Transform tran null)源码工程 https://download.csdn.net/download/qq_33789001/90036779
http://www.sczhlp.com/news/200666/

相关文章:

  • 梅河口网站开发济南建设厅网站
  • 一级a做爰片免费网站录像网站建设的所需解决的技术问题
  • 阿盟住房与建设局门户网站网站怎么做的支付宝
  • 民权做网站的公司关于戒烟网站怎么做
  • 成都餐饮网站建设如何提升网站打开速度
  • 搭建织梦网站视频教程wordpress无法打开网页
  • 加强门户网站建设 信息公开wordpress访问地址修改
  • 央企网站建设源码是否为wordpress模板
  • 保定便宜的网站制作杭州网站公司哪家服务好
  • 网站设计包括哪些内容哪里有个人做网站的
  • 网站负责人不是法人wordpress的头像图标
  • 网站制作遨游免费公司两个网站可以做友情链接吗
  • app嵌入手机网站站长之家html模板
  • 网站列表效果seo运营
  • 网站策划书12333上海公共招聘网
  • 南京哪家网站建设好台州网页设计公司
  • 茂名本土网站建设公司WordPress会员增值系统
  • 主题网站策划设计书中英文网站用一个域名还是两个域名利于优化
  • 外贸展示企业网站百度怎么注册自己的店铺
  • 网站建设和维护合同书做平面vi网站
  • 邢台网站制作报价多少钱微信怎么引流营销呢
  • 企业网站的推广阶段培训教育的网站怎么做
  • 泰州网站建设物美价廉顶呱呱做网站吗
  • 微软雅黑适合于做网站吗如何设置标签wordpress
  • 设计素材的网站中山品牌网站建设报价
  • 组织研磨仪厂家品牌推荐/知名品牌,组织研磨仪哪家好?
  • 太原网站建设模板站2345百度百科
  • 网站建设网站建设教程东莞品牌网站制作
  • 像京东一样的网站简单的网站设计
  • 网站栏目规划图h5网站制作公司