没有合适的资源?快使用搜索试试~ 我知道了~
本文实例为大家分享了Unity实现ScrollView滑动吸附的具体代码,供大家参考,具体内容如下 最近在做一个展示模块的时候遇到了一个需要实现滑动窗口并且能固定吸附距离的需求,借助UGUI的ScrollView的API以及Dotween实现了这个功能。主要核心逻辑就是检测Content节点的RectTransform的localPosX的移动距离然后继承实现OnDrag几个接口来完成拖动再松开自动吸附到具体的位置。具体效果如下 另外说一下有几个ScrollView自带的API需要设置一下,一个事Movement Type设置成Unrestricted,以及关闭Inertia,这样才能关闭S
资源推荐
资源详情
资源评论
Unity实现实现ScrollView滑动吸附功能滑动吸附功能
本文实例为大家分享了Unity实现ScrollView滑动吸附的具体代码,供大家参考,具体内容如下
最近在做一个展示模块的时候遇到了一个需要实现滑动窗口并且能固定吸附距离的需求,借助UGUI的ScrollView的API以及Dotween实现了这个功能。主要核
心逻辑就是检测Content节点的RectTransform的localPosX的移动距离然后继承实现OnDrag几个接口来完成拖动再松开自动吸附到具体的位置。具体效果如下
另外说一下有几个ScrollView自带的API需要设置一下,一个事Movement Type设置成Unrestricted,以及关闭Inertia,这样才能关闭ScrollView自带的最大距
离移动控制不会导致在松手吸附过程中因为拖动距离大于了左右两边限制而最终的移动结束的坐标位置不对。
下面贴一下代码,脚本直接附在Content物体上既可。
Tip:代码里的450 225是一个子物体宽度的加上content的Space距离,我演示的工程师一个Image420的宽度 30的HorLayout Space,225则是这个距离/2,可
以根据具体需求去改变由于只是为了出个DEMO就没有写成变量
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using DG.Tweening;
using DG.Tweening.Core.Easing;
using UnityEngine.Experimental.UIElements;
public class ScorllViewAutoHandler : MonoBehaviour, IEndDragHandler, IBeginDragHandler, IDragHandler
{
private GameObject Scroll;
private ScrollRect sc;
private float OriginPosX;
private float offsetX;
private int CurIndex;
private bool isDragging = false;
private bool TimerFlag = false;
private float Timer;
// Start is called before the first frame update
void Start()
{
CurIndex = 0;
Scroll = this.gameObject;
sc = Scroll.transform.parent.transform.parent.gameObject.GetComponent<ScrollRect>();
}
public void OnEndDrag(PointerEventData eventData)
{
int tempIndex=0;
sc.OnEndDrag(eventData);
offsetX = this.transform.localPosition.x - OriginPosX;
if (Mathf.Abs(offsetX) % 450 < 225)
{
资源评论
weixin_38668672
- 粉丝: 6
- 资源: 907
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功