【Unity】Unity拖拽在Android设备有延迟和卡顿问题的解决

一、介绍

在制作Block类游戏时,其核心的逻辑就是拖拽方块放入到地图中,这里最先想到的就是Unity的拖拽接口IDragHandler,然后通过 IPointerDownHandler, IPointerUpHandler 这两个接口判断按下和松手,具体的实现逻辑就是下面

 public void OnDrag(PointerEventData eventData){    if (Input.touchCount > 1)  //防止同时点击和拖动两个方块{return;}pointState = 1;// RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, Input.mousePosition, eventData.enterEventCamera, out Vector3 newPosition);RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, eventData.position, eventData.enterEventCamera, out Vector3 newPosition);newPosition = transform.parent.InverseTransformPoint(newPosition);//transform.localPosition = new Vector3(newPosition.x * OffsetRate, newPosition.y * OffsetRate + OffsetY);Vector3 offectPos = (newPosition - downPos) * OffsetRate;//transform.localPosition = new Vector3(0, OffsetY) + offectPos;Vector3 test = Vector3.zero;transform.localPosition = Vector3.SmoothDamp(transform.localPosition, new Vector3(0, OffsetY) + offectPos, ref test, 0.01f);}

上面代码中可以根据Input.mousePosition或者eventData.position来获取玩家按下的屏幕坐标位置,然后再进行转换到自己需要的坐标就好了

二、问题

上面的方法在Unity中完美实现需要的功能,但是打包到安卓设备后,会发现拖拽来回移动速度快的时候,仔细观察会发现拖拽的物体不跟手,且看起来刷新率很低,有一种卡卡的感觉。当然这些都是很极端的情况,一般用户也不会这么操作,其实对游戏本身影响并不是很大。但是如果要追求极致的话,就需要解决这个问题。

上面代码中本来是直接实时更改物体的位置,后来使用Vector3.SmoothDamp进行平滑过渡,总体看起来变化其实并不大。

三、解决方案

首先是调优打包配置,如下图所示
在这里插入图片描述
选择Dont Sync 然后
在这里插入图片描述
取消勾选该处并且Resolution Scaling Mode选择 Fixed DPI 根据自身修改DPI值

然后也是最关键的 就是弃用OnDrag方法,在Update方法中更新位置,通过Input.mousePosition获取按下的实时位置来更新物体的位置,然后在游戏启动时,提高设备的帧率,执行下面方法

    private void Start(){Application.targetFrameRate = 280;}

这样打包在安卓设备上拖拽卡顿和延迟就有明显改善,核心思想就是提高刷新率
至于为什么unity自带的OnDrag接口在安卓设备上拖拽会有卡顿和延迟的问题,找了一些文档有说是Unity该接口对安卓设备获取的拖拽事件有延迟,具体什么原因我也不是很清楚,有知道的还请不吝赐教哈~

Over~
觉得有用记得点个赞哦~

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

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

相关文章

解线性方程组(二)

实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:进一步熟练掌握用Jacobi迭代法和Gauss-Seidel法解线性方程组的算法,提高编程能力和解算线性方程组问题的实践技能。 实验内容: 1)取初值性x(0)(0,0,0,0)T, 精度要求ε…

易语言模拟真人动态生成鼠标滑动路径

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

Charles抓包_Android

1.下载地址 2.破解方法 3.安卓调试办法 查看官方文档,Android N之后抓包要声明App可用User目录下的CA证书 3.1.在Proxy下进行以下设置(路径Proxy->Proxy Settings) 3.1.1.不抓包Windows,即不勾选此项,免得打输出不…

进程崩溃难以定位,日志分析五步搞定|OceanBase故障排查实践

作者:胡呈清,爱可生 DBA 团队成员,擅长故障分析、性能优化。 背景 Server 进程崩溃的常见原因包括程序bug、文件损坏、磁盘坏块以及内存坏块,这类故障通常较难分析和定位。 在OceanBase 集群部署时,系统会自动配置co…

[spring源码]spring配置类解析

解析配置类 在启动Spring时,需要传入一个AppConfig.class给ApplicationContext,ApplicationContext会根据AppConfig类封装为一个BeanDefinition,这种BeanDefinition我们把它称为配置类BeanDefinition AnnotationConfigApplicationContext a…

低压电容器衰减的计算方法

低压电容器的衰减(通常指电容器容量的衰减)是指电容器在长时间运行或经历一些不良工作环境下,电容值随时间逐渐减少的现象。这个衰减会影响电容器的工作性能,尤其是在无功补偿和功率因数校正等应用中。计算电容器衰减的具体方法可…

Maven的安装配置

文章目录 一、MVN 的下载二、配置maven2.1、更改maven/conf/settings.xml配置2.2、配置环境变量一、MVN 的下载 还是那句话,要去就去官网或者github,别的地方不要去下载。我们下载binaries/ 目录下的 cd /opt/server wget https://downloads.apache.org/maven/maven-3/3.9.6/…

构建Java教学新生态:SpringBoot应用实例

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

ctfshow(316)--XSS漏洞--反射性XSS

Web316 进入界面: 审计 显示是关于反射性XSS的题目。 思路 首先想到利用XSS平台解题,看其他师傅的wp提示flag是在cookie中。 当前页面的cookie是flagyou%20are%20not%20admin%20no%20flag。 但是这里我使用XSS平台,显示的cookie还是这样…

【设计模式系列】建造者模式(十)

目录 一、什么是建造者模式 二、建造者模式的角色 三、建造者模式的典型应用 四、建造者模式在StringBuilder中的应用 五、典型建造者模式的案例 一、什么是建造者模式 建造者模式(Builder Pattern)是一种创建型设计模式,用于构建复杂对…

NVR批量管理软件/平台EasyNVR多个NVR同时管理的智能化革新

随着安防监控技术的不断进步和普及,视频监控系统在各行各业中的应用愈发广泛。无论是大型企业、工业园区,还是公共场所、住宅小区,视频监控都成为了保障安全、提升管理效率的重要手段。 NVR批量管理软件/平台EasyNVR,作为一款集多…

【公司新闻】实力出圈!开放传神(OpenCSG)登上《IT时报》!

2024年11月1日(星期五),《IT时报》刊登了关于开放传神(以下简称:OpenCSG)的新闻内容,这期报道究竟揭示了哪些亮点?让我们一起来深入了解。 来源:《 IT时报 》 本报记者 &…

python的安装环境Miniconda(Conda 命令管理依赖配置)

这一段时间,对AI大模型 有了兴趣就想研究一下。 在研究之前肯定要先把需要的编程技能掌握了。经过我查阅资料,今天就先学一下 python的 环境安装。 Node.js 包管理工具:npm 依赖配置文件:package.json 环境管理:nvm&am…

初级图像处理工具

图像处理-初级 1、功能概览 初级图像处理工具旨在为用户提供一个易于使用的界面来执行常见的图像处理任务。该工具集成了多项实用功能,从显示和调整图像的基本属性到应用各种滤镜效果,用户都可以通过简单的命令行交互来完成。 我们的初级图像处理工具…

【docker】5. 背景知识(了解)

Docker 是什么 Docker 本质 Docker 本质其实是 LXC 之类的增强版,它本身不是容器,而是容器的易用工具。容器是 linux 内核中的技术,Docker 只是把这种技术在使用上简易普及了。Docker 在早期的版本其核心就是 LXC 的二次封装发行版。 Docke…

【react框架之dvajs】如何创建一个初始的dva项目工程

dvajs作为react的框架,一度火爆市场,只是新框架层出不穷,也是越做越成熟了,很多老的框架被淹没,使用的越来越少。dva框架还是有不少的公司有项目在使用! dva项目的搭建步骤 在系统检测是否安装了dva&…

5分钟科普:AI网关是什么?应用场景是什么?有没有开源的选择?

AI网关的功能及其定义 AI网关位于企业应用与内外部大模型调用的交汇点,能够灵活地将请求转发给内部自建模型或外部大模型服务提供商,甚至海外的服务商。它管理着企业所有的AI出口流量,为企业内的不同团队提供了多方面的优势。 对于开发团队…

Spring中的 InitializingBean、BeanPostProcessor、@PostConstruct 等初始化动作的执行时机分析

初始化Bean的时序图如下: 小结说明: 1、相同点:InitializingBean 的(afterPropertiesSet方法)、BeanPostProcessor、PostConstruct 都是在bean的属性注入完毕之后才执行,都可以用来进行bean的初始化动作 2、初始化执行顺序优先级…

java ssm 校园快递物流平台 校园快递管理系统 物流管理 源码 jsp

一、项目简介 本项目是一套基于SSM的校园快递物流平台,主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具等。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后端技术&#x…

最新整理:Selenium自动化测试面试题

1.selenium中如何判断元素是否存在? find_elements查找到的元素个数为0,find_element报错意味着元素不存在 2.如何判断元素是否出现? 判断元素是否出现,存在两种情况,一种是该元素压根就没有,自然不会出现;另外一种是有这样的…