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

TouchPad(单例)

TouchPad是一个底层触摸输入管理器直接挂载在场景中的 UI 或游戏物体上通过实现 Unity 事件系统接口IPointerDownHandler,IDragHandler,IPointerUpHandler,IBeginDragHandler,IDropHandler,IPointerExitHandler来接收原始指针事件并将其转换为C# 事件供外部订阅如ScreenDragEventExecuteEvents消息发送给碰撞体上的TouchPadMessageTarget组件代码解释1.变量声明接口名称作用回调方法触发时机IPointerDownHandler指针按下void OnPointerDown(PointerEventData eventData)鼠标/手指在物体上按下时IBeginDragHandler开始拖拽void OnBeginDrag(PointerEventData eventData)按下后移动超过阈值开始拖拽时仅触发一次IDragHandler拖拽中void OnDrag(PointerEventData eventData)拖拽过程中每帧触发IPointerUpHandler指针抬起void OnPointerUp(PointerEventData eventData)鼠标/手指抬起时IDropHandler放下void OnDrop(PointerEventData eventData)拖拽的物体被放到另一个可放置的物体上时IPointerExitHandler指针退出void OnPointerExit(PointerEventData eventData)指针移出物体的碰撞区域时2.变量声明2.1 事件声明Action不是 Unity 专属它是C# 内置的委托类型在 Unity 中用来做事件通知、方法回调、解耦代码最常用按钮点击、技能释放、UI 刷新、消息广播。Action- C# 内置的委托类型https://blog.csdn.net/LFJINNAN/article/details/160478366Action 可以存方法的变量只能存 void 方法可以被外部订阅的委托字段作用让外部脚本如TouchManager订阅并接收触摸事件而不需要通过ExecuteEvents机制。TouchPadEventArgshttps://blog.csdn.net/LFJINNAN/article/details/160482722?spm1001.2014.3001.55022.2 属性声明属性类型说明ScreenTouchPosVector2当前触摸点的屏幕坐标私有 setScreenDragDirectionVector2计算当前拖拽方向当前位置 - 上一帧位置WorldTouchPosVector3屏幕坐标转世界坐标依赖Camera.main若相机不存在则返回Vector3.zeroIsTouchedbool是否正在触摸中按下后未抬起/退出IsActivebool触摸处理是否启用可通过SetTouchActivity修改CameraMainCamera简写属性返回Camera.main每次调用都重新获取注意性能注意ScreenTouchPos和IsTouched只有set没有get 实际上代码中是public Vector2 ScreenTouchPos { get; private set; }所以外部可读但不可写。Camera.main每次访问都会调用FindGameObjectsWithTag有一定开销但在触摸事件中调用频率较高每帧可能多次。可以考虑缓存。2.3 序列化字段Inspector 可见dlog编辑器调试日志开关在UNITY_EDITOR预处理块中使用。onlyTopCollider是否只向最顶层的碰撞体发送消息。此值会传给tpea.SetTouch方法由TouchPadEventArgs内部实现射线检测时使用。[Tooltip]仅作用于Inspector 面板用来给变量添加鼠标悬浮提示文字2.4 私有字段临时变量字段类型作用hitListListCollider2D当前帧按下的碰撞体列表或上一帧的列表newHitListListCollider2D新一帧的碰撞体列表实时射线检测结果tpeaTouchPadEventArgs复用的参数对象减少 GC 分配pointerIDint当前活动的指针 ID用于多点触控过滤oldPositionVector2上一帧的屏幕坐标2.4.1pointerIDpointerID确保了用户拖拽哪张牌系统就准确响应哪张牌即使另一根手指不小心碰到屏幕也不会造成干扰。方面说明核心作用唯一标识并追踪一个特定的触摸点主要使用场景按下时记录拖拽/抬起的验证多点触控隔离取值来源PointerEventData.pointerIdTouchPad或Touch.fingerIdTouchPadS典型值示例鼠标-1 或固定值如10触摸第1指0第2指1不使用的后果多点触控时状态混乱拖拽目标错误2.5 单例3.单例与初始化Awake单例如果已存在实例则销毁当前对象否则将自己设为单例。保证场景里 永远只能有一个该脚本对象第一次加载赋值自己为唯一实例重复挂载 / 多复制物体自动删掉多余的4. 事件回调详细解析4.1 OnPointerDown - 按下通过IsTouched确保只有第一次按下被处理防止多点触控中第二个手指触发。重新创建tpea这里产生了 GC是潜在的优化点。SetTouch内部进行射线检测填充tpea.hits。使用ExecuteEvents.ExecuteTouchPadMessageTarget向所有命中碰撞体发送PointerDown消息。记录第一个命中物体的TouchPadMessageTarget组件到tpea.firstSelected。触发外部事件ScreenPointerDownEvent。

相关文章:

TouchPad(单例)

TouchPad 是一个底层触摸输入管理器,直接挂载在场景中的 UI 或游戏物体上,通过实现 Unity 事件系统接口(IPointerDownHandler, IDragHandler, IPointerUpHandler, IBeginDragHandler, IDropHandler, IPointerExitHandler)来接收原…...

Kotlin的@kotlin.time.ExperimentalTime的使用示例

Kotlin作为一门现代化的编程语言,不断引入实验性功能来优化开发体验。其中,kotlin.time.ExperimentalTime注解为时间操作提供了强大的实验性支持,让开发者能够更灵活地处理时间测量和计算。本文将深入探讨其使用场景,并通过具体示…...

DeepSeek写的小说,prompt 是“写一个搞 大模型AI 的爽文男主小说,写 5 章内容,剧情搞笑好玩”

林北醒过来的时候,脑子里多了个玩意儿。不是比喻,是真多了个玩意儿。一个冰冷机械的声音在他脑壳里响了起来:“叮——恭喜宿主,神豪返利系统已绑定。检测到宿主当前余额:143.8元。系统初次启动,赠送新手大礼…...

Qwen3-4B-Instruct保姆级教程:从服务器初始化到WebUI访问全链路

Qwen3-4B-Instruct保姆级教程:从服务器初始化到WebUI访问全链路 1. 引言 Qwen3-4B-Instruct-2507是Qwen3系列的端侧/轻量旗舰模型,原生支持256K token(约50万字)上下文窗口,并可扩展至1M token。这意味着它能轻松处理…...

品牌智能增长效果如何评估?三大核心指标拆解

当下,很多品牌投入大量资源布局品牌智能增长,却普遍面临一个核心困境:AI 在解答用户相关问题时,鲜少提及自身品牌。其症结在于:AI 平台品牌增长的效果评估,不可套用传统 SEO 的逻辑框架。与 SEO 聚焦搜索排…...

Mac彻底清理指南:Pearcleaner让你的系统重获新生

Mac彻底清理指南:Pearcleaner让你的系统重获新生 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾发现Mac磁盘空间越来越小,但…...

AI时代产品经理的工作流重构

从“需求描述”到“可交付物”:AI时代产品经理的工作流重构 2026年的今天,大模型带来的AI能力已经深度嵌入产品工作流。然而,许多产品经理仍然把AI当做“更聪明的搜索引擎”——在对话框里输入需求,得到一堆“正确的废话”后&…...

无锡佳钛合不锈钢有限公司三通的焊接工艺

无锡佳钛合不锈钢有限公司 在工业领域中,三通作为一种重要的连接件,其焊接工艺的优劣直接影响着整个管道系统的质量和可靠性。三通焊接是一项技术要求较高的工作,需要严谨的操作和精细的工艺控制。三通焊接的首要步骤是焊接前的准备工作。这…...

终于找到了!新手导演制作微电影专用的AI工具,即梦Seedance 2.0让我直接起飞

哈喽,艾瑞巴蒂!我是你们的AI工具人博主——xiao阿娜。最近收到很多影视专业学生和独立导演的私信:"阿娜,有没有新手导演制作微电影专用的AI工具?零基础也能上手的那种?"我太懂这个需求了。你有满…...

React 快速入门到精通教程:从零基础到能写项目

React 快速入门到精通教程:从零基础到能写项目 React 官方把它定义为:用 JavaScript 构建用户界面的库,核心思想是把页面拆成一个个组件,再用数据驱动页面变化。React 官方快速入门也强调,日常开发中最常用的能力包括…...

QFT终极指南:如何用Rust构建真正的点对点UDP文件传输工具

QFT终极指南:如何用Rust构建真正的点对点UDP文件传输工具 【免费下载链接】qft Quick Peer-To-Peer UDP file transfer 项目地址: https://gitcode.com/gh_mirrors/qf/qft 在当今数字化时代,文件传输已成为日常工作和协作的基础需求。无论是开发者…...

小白必看!零技术、零代码,用Open Claw 1688接口搞定选品监控

作为一个电商小白,刚开始做无货源、小铺的时候,我真的被选品逼疯过——完全不懂代码,看到别人说“爬虫选品”“接口对接”就头大,生怕自己学不会;手动在1688翻款,每天翻一下午,眼睛都看花了&…...

2026年植物精粹科技活酿人参酒深度解析及权威榜单发布

行业痛点分析当前天然药用植物行业面临诸多难题,严重制约了植物精粹科技的发展。资源稀缺、种植周期长是首要问题,像人参等珍稀药材生长周期长达数年甚至数十年,难以满足市场需求。数据表明,传统人参种植需15年才能达到一定品质&a…...

个人第一篇博客

我叫赵志东,来自东莞 我学编程的目的是不想浪费这两个月的时间 每天花费3小时来学习编程。...

(GGGGS) n 连接子截短现象的发现与机制--文献精读223

Discovery and investigation of the truncation of the (GGGGS)n linker and its effect on the productivity of bispecific antibodies expressed in mammalian cells(GGGGS) n 连接子截短现象的发现与机制探究及其对哺乳动物细胞表达双特异性抗体产量的影响摘要蛋白质工程是…...

Flux2-Klein-9B-True-V2文生图教程:电影级打光提示词(伦勃朗/蝴蝶光)

Flux2-Klein-9B-True-V2文生图教程:电影级打光提示词(伦勃朗/蝴蝶光) 1. 项目简介与快速入门 Flux2-Klein-9B-True-V2是基于FLUX.2-Klein-9B微调的图片生成模型,专为高质量图像生成和编辑而设计。这个模型特别适合需要专业级光影…...

MedGemma-X在教学查房中的应用:AI实时生成鉴别诊断思维导图

MedGemma-X在教学查房中的应用:AI实时生成鉴别诊断思维导图 1. 教学查房的痛点与AI解决方案 教学查房是医学教育中至关重要的环节,但传统方式存在几个明显痛点: 时间压力大:在有限的时间内,带教老师需要完成患者诊疗…...

小白也能轻松上手:DDColor黑白修复ComfyUI指南

小白也能轻松上手:DDColor黑白修复ComfyUI指南 1. 为什么选择DDColor修复老照片? 老照片承载着珍贵的记忆,但随着时间的推移,这些黑白影像逐渐褪色、模糊。传统的手工修复方法不仅耗时费力,还需要专业的美术功底。现…...

智能导游中的路线规划与讲解服务

智能导游中的路线规划与讲解服务 随着人工智能技术的快速发展,智能导游已成为旅游行业的新宠。它不仅能为游客提供个性化的路线规划,还能通过语音讲解、互动问答等方式,让旅行体验更加丰富。无论是自由行游客还是团队游客,智能导…...

PyCharm专业版用户看过来:不用Anaconda,如何用内置工具创建和管理Python虚拟环境?

PyCharm专业版虚拟环境管理全指南:告别Anaconda的轻量化方案 每次启动Anaconda Navigator时那个缓慢的加载进度条,是否让你怀念PyCharm流畅的启动体验?作为PyCharm专业版用户,你可能还没意识到自己手中已经握有一把环境管理的瑞士…...

NSGA-II vs. 传统遗传算法:多目标优化场景下,你该选哪个?(附对比实验)

NSGA-II与传统遗传算法深度对比:多目标优化实战指南 当面对需要同时优化多个相互冲突目标的工程问题时,算法选型往往成为项目成败的关键分水岭。传统遗传算法(GA)作为进化计算的经典代表,与专为多目标优化设计的NSGA-I…...

一人管50个TK号,每天只花10分钟?全靠指纹浏览器AI Agent

刚狠心辞了档口那两个做代运营的小妹,这高昂的人力开支实在扛不住了。在青岛卖假发去海外,以前我纯靠人工死磕10个TK号,每天起码耗费4个小时挨个去点赞、发评论,手都麻了。后来用过一阵子RPA程序,结果写脚本麻烦得要死…...

VSCode日志实时过滤与智能告警(Log Monitor Pro 2.4新特性首发):支持正则分组提取+阈值触发Shell脚本

更多请点击: https://intelliparadigm.com 第一章:VSCode日志插件教程 安装与启用日志查看插件 在 VSCode 中高效分析应用日志,推荐使用官方认证的 Log File Highlighter 或轻量级的 Log Viewer。打开扩展视图(CtrlShiftX&…...

为什么孩子要先学盲打再提速?科学打字训练方法应该是怎样的?

不少家长都有同款困惑:孩子写作文、整理课堂笔记、线上交作业,思路想得清清楚楚,实操打字却拖后腿。打两行就低头找键盘,频繁回删改错字,写作思路反复中断,半小时敲不出一小段内容。 很多人盲目把问题归为孩…...

如何安全备份安卓短信和通话记录:SMS Backup+ 的完整指南

如何安全备份安卓短信和通话记录:SMS Backup 的完整指南 【免费下载链接】sms-backup-plus Backup Android SMS, MMS and call log to Gmail / Gcal / IMAP 项目地址: https://gitcode.com/gh_mirrors/sms/sms-backup-plus 您是否曾担心手机丢失或损坏时&…...

LiquidAI LFM2-2.6B多平台部署:Ollama CLI调用+LM Studio图形界面双教程

LiquidAI LFM2-2.6B多平台部署:Ollama CLI调用LM Studio图形界面双教程 1. 模型简介 LFM2-2.6B-GGUF是由Liquid AI公司开发的轻量级大语言模型,经过量化处理后特别适合在资源有限的设备上运行。这个2.6B参数的模型在保持良好性能的同时,大幅…...

【超详细】四阶龙格-库塔法(RK4)深度解析|一文吃透微分方程求解+MATLAB完整可视化代码

文章目录🌧️ 序章:雨滴下落的轨迹,藏着数值计算的诗意🔍 直观理解:为什么我们需要RK4?微分方程无法直接求解的现实困境常见数值方法的缺陷🧭 RK4 核心思想:用四次试探,走…...

XPack-MCP-Marketplace:AI时代的“应用商店”,一键部署与管理MCP服务

1. 项目概述:一个AI时代的“应用商店”雏形最近在折腾AI应用开发的朋友,估计都绕不开一个词:MCP(Model Context Protocol)。简单来说,它就像给AI大模型(比如ChatGPT、Claude)装上了一…...

终极指南:如何使用League Akari免费提升英雄联盟游戏体验

终极指南:如何使用League Akari免费提升英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基于英…...

毕设项目 stm32 RFID智能仓库管理系统(源码+硬件+论文)

文章目录 0 前言1 主要功能3 核心软件设计4 实现效果5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系…...