Unity ScrollView手机滑动手感的问题

Unity Scroll View自动滚动 (默认值)时,当用户在滚动内容后释放鼠标或手指时,内容会继续根据之前的速度滚动一段时间,并逐渐减速直到停止。因为鼠标不操作的情况下,会设置滚动视图的速度一直为0,这样就没办法进行自动滚动。正常情况下,鼠标点击或者拖动会使其开始滚动,也就是等于调节了ScrollView上ScrollRect组件的速度值。Inertia一定要勾选上,并且DecelerationRate必须是一个大于0的值,在这里默认值就行。如果想禁止鼠标拖拽,可以简单的关闭画布上的图形射线投射组件,这样鼠标不会对ui进行检测。 阅读详情

一直以来总是感觉Unity做的滚动列表在手机上滑动起来和原生的手感感觉不同,要么感觉不灵敏,要么感觉拖不动。

是否你也有同感?

今天抽时间找下问题,看看有没参数来调整的能好一些。

ScrollView本身有几个参数可以调整,但是都不是那个感觉。

特别是手指快速略过的时候,甚至滚动条可能根本连反应都没有。

感觉他有一个阈值,但是没找到什么参数能来控制,后来找到在EventSystem里有一个DragThreshold,但是设置成1了也没见到作用。

在OnDrag 和 OnEndDrag里加了Log,快速划过后滚动条没动,不是屏幕不灵敏,Log其实已经检测到都有输出了,甚至在OnEndDrag里输出了ScrollView的Velocity竟然都是0 。

所以决定自己给他计算手指松开的速度来解决这个问题。

public class DragScrollViewCheck : EventTriggerListener
{
	ScrollRect scrollViewMy;  //外层的
	float lastTime;
    Vector3 lastPos;
    int lastForward = -1;
    void Start()
    {
        if (scrollView == null)
            FindScrollView();
    }
    void OnEnable()
    {
        if (scrollView == null)
            FindScrollView();
    }
    void FindScrollView()
    {
        scrollViewMy = transform.GetComponentInParent<ScrollRect>();
    }
	public override void OnDrag(UnityEngine.EventSystems.PointerEventData eventData)
    {
       bool changed = false;
        if (eventData.delta.y > 0 && lastForward != 1)
        {
            changed = true;
            lastForward = 1;
            Debug.Log(" 方向变了 > 0");
        }
        else if (eventData.delta.y < 0 && lastForward != 0)
        {
            changed = true;
            lastForward = 0;
            Debug.Log(" 方向变了 < 0");
        }
        if (changed)
        {
            lastTime = Time.time;
            lastPos = eventData.position;
        }
    }
    public override void OnEndDrag(PointerEventData eventData)
    {
    	lastForward = -1;
        float t = Time.time - lastTime;
        Vector2 sub = eventData.position - (Vector2)lastPos;
        
        //加速度和距离公式 s = v0t + 1/2at^2;
        Vector2 vA = (2 * sub) / (t * t);
        //加速度瞬时速度公式 Vt = V0 +at;
        Vector2 vT = vA * t;
        scrollViewMy.velocity = vT;
        //Debug.Log("OnEndDrag:" + scrollViewMy.velocity.ToString("F4") + vT.ToString("F4") + ",t:" + t.ToString("F4"));
        
    }
}

手机调试,反应灵敏多了,还有滑动感,还不错,这就分享上来。

这里建议一定要在手机上测试,因为电脑上和手机上手感是完全不一样的。

经过一段时间测试,发现有时手快速划过然后松开,因为上面的代码加速度是在松开和上一帧的点计算的,可能突然停下来松开速度快过。

可以改成尝试取几次来平均计算可能效果更好。
后面有机会再补充下代码。

Unity Scroll View进阶:打造流畅滑动翻页效果的实战指南 本文深入探讨了Unity中Scroll View实现流畅滑动翻页效果的核心技术与实战优化。通过精准计算页面位置、优化拖拽判定与翻页逻辑,并引入平滑动画曲线,详细讲解了如何将默认的自由滚动改造为具有磁吸感的翻页体验。文章还涵盖了性能优化、视觉反馈以及动态页面处理等进阶内容,帮助开发者打造更专业、更跟手的UI交互。 阅读详情

相关推荐

Unity UI Toolkit PageView深度解析:从官方组件到高性能复用实战

在Unity应用开发中,UI系统是连接用户与程序功能的核心桥梁。其原理在于通过视觉元素(Visual Element)的层级结构与事件响应机制,构建交互界面。从技术价值看,一套高效的UI框架能显著提升应用流畅度与开发效率。在移动端游戏、应用展示等场景,翻页视图(PageView)是实现多内容切换的常见需求。本文聚焦于Unity新一代UI解决方案UI Toolkit,深入探讨其官方PageView组件的核心机制,并针对**性能优化**与**实战避坑**提供完整方案,涵盖页面复用池、指示器集成与自动播放控制,助

weixin_30535843的博客 607

Unity ScrollView滚动列表开发指南:从原理到高级交互实现

在Unity UI开发中,滚动列表是处理大量内容展示的核心技术方案。其基本原理是通过视口裁剪与内容容器位移,实现有限显示区域内的无限内容浏览。ScrollRect组件作为控制核心,通过归一化位置计算驱动滚动行为,结合Mask或性能更优的RectMask2D实现视觉裁剪。这项技术的工程价值在于高效管理超出屏幕范围的数据项,广泛应用于游戏背包、社交聊天、商品列表等场景。针对性能优化,常采用对象池与动态加载策略,并需注意避免因Canvas频繁重建导致的卡顿问题。本文聚焦Unity ScrollView的实战应用,

WGH100817的博客 325

Cocos Creator跨平台游戏开发实战:滑动与生存机制实现

跨平台游戏开发是现代游戏工程实践中的重要方向,其核心原理在于通过统一的代码库适配不同硬件与操作系统,从而大幅提升开发效率并降低维护成本。Cocos Creator作为一款成熟的跨平台游戏引擎,其技术价值在于提供了从渲染、输入到资源管理的完整解决方案,尤其擅长2D游戏的深度优化。在应用场景上,它广泛适用于需要快速迭代、多端发布的休闲游戏和中小型项目。本文以“滑动与生存”这一具体游戏原型为例,深入探讨了如何利用Cocos Creator的组件化开发模式,封装统一的输入管理系统以处理多端适配,并实现包含状态机、碰

weixin_30915275的博客 455

Unity-UGUI太难用?!自定义适配触摸屏和鼠标的ScrollView组件

Unity-UGUI太难用?!自定义适配触摸屏和鼠标的ScrollView组件Unity自带的ScrollView组件实在太难用了!1. 当用户把鼠标放在内容按钮上时,无法滑动ScrollView2.新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列...

拉菲Laughing的博客 1196

pi-star图形界面安装指南

pi-star图形界面安装指南,MMDVM热点安装,树莓派3B+热点

blueisman的专栏 1911

SONiC (6) - SONiC 源码框架分析

https://github.com/sonic-net/sonic-utilitieshttps://github.com/sonic-net/sonic-snmpagenthttps://github.com/sonic-net/sonic-linux-kernelhttps://github.com/sonic-net/sonic-platform-commonhttps://github.com/sonic-net/sonic-platform-daemons以下是在 SONiC 中运行的容器列表:

qq_49477505的博客 1338

Unity学习笔记——ScrollView常用技巧

Unity之ScrollView使用

m0_52058484的博客 6060

Labview数据存储与读取——TDMS文件的创建与写入

Labview数据存储与读取——TDMS文件的创建与写入 你好,这是我在自学Labview编写软件过程中使用的一些功能。我在存储采集卡数据时,通过阅读大量他人的程序,发现TDM及TDMS文件十分适合波形数据的记录,TDMS文件比TDM文件在存储动态类型数据时读写速度更快,而且TDMS 文件没有容量限制,适合存储数据量庞大的测试数据。 前言少叙,书归正传 这一篇博客,说明一下如何使用基本的TDMS功能实现数据文件的存储。 所需要的控件如上图所示,在程序框图——编程——文件I\O——TDMS 中,写入TDMS

滑板小帅程序开发 2万+

Unity3d 触屏手机滑动事件(上下左右方向精确判断)

滑动方向判断

于子潇的博客 2万+

STM32F103C8T6 + GY-906红外测温:手把手教你用CubeMX和HAL库搞定IIC驱动(附完整工程)

本文详细介绍了如何使用STM32F103C8T6和GY-906红外测温传感器(基于MLX90614芯片)实现非接触式温度测量。从STM32CubeMX工程创建、HAL库驱动适配到温度数据采集与处理,提供完整的开发流程和常见问题解决方案,帮助开发者快速掌握红外测温技术。

weixin_29188043的博客 255

【Flow3D实战】从零构建水利冲淤模型:关键步骤与参数详解

本文详细介绍了使用Flow3D构建水利冲淤模型的关键步骤与参数设置技巧。从基础认知到前处理、计算设置和后处理,全面解析如何高效模拟水流与泥沙的相互作用,特别适用于桥墩冲刷、水库泄洪等工程场景。通过实战案例分享,帮助读者掌握Flow3D在水利工程中的精准应用,提升模型精度与计算效率。

weixin_42549723的博客 510

Unity UGUI ScrollView动态内容自适应与性能优化实战

在Unity UI开发中,ScrollView滚动列表的动态内容自适应是常见需求。UGUI通过RectTransform锚点轴心、LayoutGroup与ContentSizeFitter协同计算Content尺寸,但ScrollRect只负责位移,与布局系统解耦,导致运行时增删条目后常出现滚不到底、顶部插入跳动、删除留白等问题。正确配置锚点、布局参数并把握布局重建时机,可让内容高度自动跟随、滚动条始终准确,同时批量刷新和虚拟列表等手段能显著降低布局重建开销。该方案适用于商城列表、聊天记录、设置面板以及PI

weixin_34116110的博客 429

电脑版微信多开,最详细教程没有之一

首先桌面任意的位置右键新建文本文档输入如下代码: TASKKILL /F/IM WECHAT.EXE start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" start " " "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" ...

大超子 4393

Unity UGUI ScrollView动态高度自适应与布局重建优化

在 Unity UI 开发中,滚动列表是高频交互组件,UGUI 的 ScrollView 通过 ScrollRect、Viewport、Content 构成滚动体系。其核心原理是布局系统结合 VerticalLayoutGroup 与 ContentSizeFitter,根据子条目 preferredHeight 计算内容尺寸,再驱动滚动范围变化。理解布局重建时机、RectMask2D 裁剪与动态增删条目后的强制刷新,能显著减少首帧抖动、内容裁切和多余 Draw Call。该机制广泛用于背包、排行榜、聊天记

weixin_34176694的博客 351

2025年华为杯中国研究生数学建模竞赛E题 高速列车轴承智能故障诊断问题 思路+代码

all_data, file_info = preprocessor.load_mat_files(file_list[:50]) # 加载前50个文件作为示例。[y_source, y_source, domain_labels], # 注意:这里使用伪标签。X_target = np.random.randn(100, X_source.shape[1], 1) # 示例数据。"""构建CNN-Transformer混合模型""""""构建Transformer模型"""

YOLO 1047

uniapp - [微信小程序 | 安卓苹果app] 详细实现接入天地图完整流程,提供显示地图、IP 属地定位 / 用户定位的城市名称、用户定位的经纬度超多功能(复制运行示例代码,详细注释及常见问题)

uni-app,微信小程序,安卓app,苹果app,App端,支付宝小程序,nvue,天地图,国家天地图api,接入使用天地图,uniApp小程序端接入天地图,uniapp安卓苹果app端接入天地图,微信小程序平台如何引入天地图,天地图Api使用教程,如何在uniapp里集成天地图,使用天地图获取当前定位,天地图api教程,天地图官方文档,天地图详细使用教程,Uniapp项目如何使用天地图,项目引入天地图配置及使用教程,使用天地图获取用户定位,天地图获取用户当前位置信息(经纬度),如何通过天地图拿到用户定位

🏆 前端领域优质创作者 1万+

UI卡顿优化实战:从帧率到动效参数,全面拆解“丝滑”体验

在移动端与跨平台界面开发中,流畅度往往被简单地等同于“平均帧率够高”。但实际用户体验取决于帧间隔的稳定性、操作反馈的及时性、动效是否符合物理直觉等多个维度。平均FPS只能反映整体趋势,却掩盖了单帧卡顿、主线程超载、布局抖动、离屏渲染过重等真实问题。要打造真正丝滑的UI,需要从渲染链路、动效参数、列表复用、合成层优化到自动化性能回归全流程入手,建立可量化、可复现的性能基线。本文结合典型卡顿案例,分享如何用P95帧间隔、100毫秒反馈原则、低端机回归测试等工程手段,系统解决界面卡顿问题,让性能优化不再停留在感觉

weixin_34279246的博客 276

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

开维游戏引擎实例:AI自动生成游戏代码:飞翔的小鸟FlappyBird

本文介绍如何使用AI工具配合开维游戏引擎快速开发游戏。开维引擎采用C++内核与JavaScript API层设计,支持跨平台运行和高效WASM网页部署。通过Gemini大模型16次迭代优化,演示了从基础代码到完整"飞翔的小鸟"游戏的开发过程,包含物理碰撞、金币系统、动画特效等功能的逐步实现。文章提供了详细的操作步骤、效果对比视频和关键代码片段,展示了AI辅助游戏开发的高效性,即使无编程基础也能通过工具链完成游戏制作。最终成果支持导出为EXE或HTML5格式,适用于多平台发布。

weixin_41399197的博客 1546

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Unity3d中ScrollView鼠标滚轮滚动慢或滚不动

将ScrollRect的Scroll Sensitivity改大一些

zouxin_88的专栏 9589

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

解决uni-app的scroll-view滚动问题

scroll-view滚动问题处理

baidu_38021142的博客 2096

移动端解决多指触碰 unity

区域,for循环所有手指, 视角转动就是不是for循环里的手指的那根手指

怨行客 1173

unity3d手机滑动效果

using UnityEngine; using System.Collections; public class TestUI : MonoBehaviour { public Vector2 scrollPosition = Vector2.zero; public float scrollVelocity = 0f; public float timeTouchPhaseEnded =

nate的专栏 4546

用代码控制ScrollView的滚动操作和不规则按钮的点击

CenterPanel下的LightBtn下的按钮是省份发光轮廓按钮,此时点击发光轮廓按钮可进入下一界面,PolygonImg下是各个省份的不规则检测区域图片,用到了PolygonCollider2D组件,点击组件的编辑按钮,然后将初始点数量改成4(为了方便),就可以编辑不规则区域了,只要拖动线条就可以创建出新的点,试试就知道了。不规则图片的点击我采用发送消息的方式来进行通知,方便快捷。点击到中间省份地图中对应的省份轮廓图时,轮廓图要亮起来,左边省份列表中也要定位到对应的按钮,且按钮亮起来。

qq_34256136的博客 1264

Unity 编辑器ScrollView滚动卡顿优化

在使用 Unity 开发游戏的时候,经常会需要用到数据配置,方式可能是CSV、JSON等等。为了可以方便地查看修改数据,通常使用ScrollView实现在 Unity 编辑器里面以列表的形式查看数据。当数据量大的时候,滚动视图会发现卡顿不断。

无幻 1万+

android使用ScrollView的页面滑动不流畅

这个是原先的ScrollView滑动不流畅的布局 <ScrollView android:id="@+id/weather_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true"> </ScrollView> 解决方案:使用NestedScr

ShiXinXin_Harbour的博客 2346
上一篇: UnityWebRequest加载Texture防止泄漏
下一篇: Unity实例化材质球的内存泄漏
Thinbug
博客等级 码龄22年 2万+粉丝 187原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Thinbug

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

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

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

打赏作者

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

抵扣说明:

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

余额充值