Unity UGUI效果 之 动态照片墙效果

 

 

Unity UGUI效果 之 动态照片墙效果

 

目录

Unity UGUI效果 之 动态照片墙效果

一、简单介绍

二、实现原理

三、注意事项

四、效果预览

五、实现步骤

六、相关代码

七、代码工程


 


一、简单介绍

UGUI,是Unity自带的 GUI 系统,有别于 NGUI;使用 UGUI 也能制作出比较酷炫的效果 。

照片墙效果,即是动态的生成图片,效果,选择对应的照片会变大,周边的照片自动闪开,选中的照片也有点击效果;

 

二、实现原理

1、UGUI 制作 照片预制体;

2、DoTween 实现动画效果;

3、EventTrigger 监听鼠标 进入照片、退出照片、点击照片的效果;

4、关键:动态生成照片,并记录照片的位置列表;选中的照片进行变大,并推移周边的照片,并记录到另一个列表;鼠标移开照片,照片还原,并且周边的照片回到自己的位置;

 

三、注意事项

1、本效果,可以支持 UGUI Canvas 的 Render Mode 任意形式,包括 Screen space-Overlay,Screen space-Camera,World Space

2、预制体 Image 的 Anchors 设置为 右上,Anchors 为 ( 1,1)

 

四、效果预览

 

五、实现步骤

1、打开Unity,新建一个场景,添加一个 Image ,并且添加一个子物体 Text 添加文字描述区分,如下图

  • 10
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
实现多页翻页和多页任意翻页的方式有很多种,下面介绍一种较为简单的实现方式。 1. 创建一个 ScrollRect 对象,并将 Content 对象的 Rect Transform 的 Anchor Presets 设置为 Stretch。 2. 在 Content 下创建多个 Page 对象,并将它们的 Rect Transform 的 Anchor Presets 设置为 Stretch。每个 Page 对象都应该放置一个要显示的 UI 元素。 3. 为 ScrollRect 添加一个 Horizontal Layout Group 组件,并将 Child Force Expand 和 Child Control Height 设置为 true。 4. 在代码中添加以下代码,实现多页翻页和多页任意翻页的效果: ```csharp using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections.Generic; public class ScrollRectPage : MonoBehaviour, IBeginDragHandler, IEndDragHandler { public ScrollRect scrollRect; public float smoothTime = 0.5f; public float sensitivity = 0.2f; private List<float> pages = new List<float>(); private int currentPage = 0; private float targetPage = 0; private bool isDragging = false; void Start() { int pageCount = scrollRect.content.childCount; for (int i = 0; i < pageCount; i++) { float page = i * scrollRect.viewport.rect.width / (pageCount - 1); pages.Add(-page); } } void Update() { if (!isDragging) { float nearestPage = pages[currentPage]; for (int i = 0; i < pages.Count; i++) { if (Mathf.Abs(pages[i] - scrollRect.horizontalNormalizedPosition) < Mathf.Abs(nearestPage - scrollRect.horizontalNormalizedPosition)) { nearestPage = pages[i]; targetPage = i; } } if (currentPage != targetPage) { currentPage = (int)targetPage; } scrollRect.horizontalNormalizedPosition = Mathf.Lerp(scrollRect.horizontalNormalizedPosition, nearestPage, smoothTime * Time.deltaTime); } } public void OnBeginDrag(PointerEventData eventData) { isDragging = true; } public void OnEndDrag(PointerEventData eventData) { isDragging = false; float delta = eventData.delta.x / scrollRect.viewport.rect.width; if (Mathf.Abs(delta) > sensitivity) { if (delta > 0) { currentPage--; } else { currentPage++; } } currentPage = Mathf.Clamp(currentPage, 0, pages.Count - 1); targetPage = currentPage; } } ``` 5. 将 ScrollRectPage 脚本挂载到 ScrollRect 对象上,并将 scrollRect 属性设置为 ScrollRect 对象。 6. 运行程序,就可以实现多页翻页和多页任意翻页的效果了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙魁XAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值