【100个 Unity实用技能】☀️ | Unity InputSystem中拿到触摸屏幕的坐标,鼠标的坐标等

2023-12-21 08:40

本文主要是介绍【100个 Unity实用技能】☀️ | Unity InputSystem中拿到触摸屏幕的坐标,鼠标的坐标等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请添加图片描述

Unity 小科普

老规矩,先介绍一下 Unity 的科普小知识:

  • Unity是 实时3D互动内容创作和运营平台 。
  • 包括游戏开发美术建筑汽车设计影视在内的所有创作者,借助 Unity 将创意变成现实。
  • Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机平板电脑PC游戏主机增强现实虚拟现实设备。
  • 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏
  • 🎬 博客主页:https://xiaoy.blog.csdn.net

  • 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉

  • 🎄 学习专栏推荐:Unity系统学习专栏

  • 🌲 游戏制作专栏推荐:游戏制作

  • 🌲Unity实战100例专栏推荐:Unity 实战100例 教程

  • 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📆 未来很长,值得我们全力奔赴更美好的生活✨

  • ------------------❤️分割线❤️-------------------------

请添加图片描述


Unity 实用小技能学习

Unity InputSystem拿到触摸屏幕的坐标,鼠标的坐标等

在Unity的新输入系统InputSystem中,获取键盘鼠标的API发生了变化,不再是之前用Input.就可以拿到了。

本文将在InputSystem中获取键盘鼠标的新API做一个简单总结整理。

键盘相关
键盘事件监听

void Update()
{if (Keyboard.current.spaceKey.wasPressedThisFrame){Debug.Log("空格键按下");}if(Keyboard.current.aKey.wasReleasedThisFrame){Debug.Log("A键抬起");}if(Keyboard.current.spaceKey.isPressed){Debug.Log("空格按下");}if(Keyboard.current.anyKey.wasPressedThisFrame){Debug.Log("任意键按下");}
}

键盘事件绑定

    void Start(){Keyboard.current.onTextInput += (c) =>{Debug.Log("通过Lambda表达式" + c);};Keyboard.current.onTextInput += KeyboardInput;}private void KeyboardInput(char c){Debug.Log("监听" + c);}

鼠标相关:

鼠标坐标

void Update
{if(Mouse.current.rightButton.wasPressedThisFrame){Debug.Log("鼠标右键按下");}if(Mouse.current.middleButton.wasPressedThisFrame){Debug.Log("鼠标中建按下");}if(Mouse.current.forwardButton.wasPressedThisFrame){Debug.Log("鼠标前键按下");}if(Mouse.current.backButton.wasPressedThisFrame){Debug.Log("鼠标后键按下");}//获取鼠标屏幕坐标(左下角为(0,0)Debug.Log(Mouse.current.position.ReadValue());//两帧之间的偏移Debug.Log(Mouse.current.delta.ReadValue());//获取鼠标滚轮坐标Debug.Log(Mouse.current.scroll.ReadValue());
}

鼠标事件绑定

    void InputTest(){GameInput inputAction = new GameInput();//GameInput为场景中的InputSystem控制器inputAction.Enable();inputAction.Gameplay.MouseDown.performed += ctx =>{Debug.Log("按下:" + UnityEngine.InputSystem.Mouse.current.position.ReadValue());};inputAction.Gameplay.MouseDrag.performed += ctx =>{Debug.Log("拖拽:" + UnityEngine.InputSystem.Mouse.current.position.ReadValue());};inputAction.Gameplay.MouseUp.performed += ctx =>{Debug.Log("抬起:" + UnityEngine.InputSystem.Mouse.current.position.ReadValue());};}

触摸屏相关

void Update
{Touchscreen ts = Touchscreen.current;if (ts == null){return;}else{TouchControl tc = ts.touches[0];if(tc.press.wasPressedThisFrame){Debug.Log("按下");}if(tc.press.wasReleasedThisFrame){Debug.Log("抬起");}if(tc.press.isPressed){Debug.Log("按住");}if(tc.tap.isPressed){}//点击次数 Debug.Log(tc.tapCount);//点击位置Debug.Log(tc.position.ReadValue());//第一次接触位置Debug.Log(tc.startPosition.ReadValue());//得到的范围Debug.Log(tc.radius.ReadValue());//偏移位置Debug.Log(tc.delta.ReadValue());//返回TouchPhase: None,Began,Moved,Ended,Canceled,StationaryDebug.Log(tc.phase.ReadValue());//判断状态UnityEngine.InputSystem.TouchPhase tp = tc.phase.ReadValue();switch (tp){//无case UnityEngine.InputSystem.TouchPhase.None:break;//开始接触case UnityEngine.InputSystem.TouchPhase.Began:break;//移动case UnityEngine.InputSystem.TouchPhase.Moved:break;//结束case UnityEngine.InputSystem.TouchPhase.Ended:break;//取消case UnityEngine.InputSystem.TouchPhase.Canceled:break;//静止case UnityEngine.InputSystem.TouchPhase.Stationary:break;}
}

手柄相关

Gamepad handle = Gamepad.current;if(handle==null){return;}Vector2 leftDir= handle.leftStick.ReadValue();//左手柄坐标Vector2 rightDir= handle.rightStick.ReadValue();//右手柄坐标//左摇杆按下抬起if(Gamepad.current.leftStickButton.wasPressedThisFrame){}if (Gamepad.current.leftStickButton.wasReleasedThisFrame){}if (Gamepad.current.leftStickButton.isPressed){}//右摇杆按下抬起if (Gamepad.current.rightStickButton.wasPressedThisFrame){}if (Gamepad.current.rightStickButton.wasReleasedThisFrame){}if (Gamepad.current.rightStickButton.isPressed){}if(Gamepad.current.dpad.left.wasPressedThisFrame){}if (Gamepad.current.dpad.left.wasReleasedThisFrame){}if (Gamepad.current.dpad.left.isPressed){}//右侧三角方块/XYAB按键//Gamepad.current.buttonEast;//Gamepad.current.buttonWest;//Gamepad.current.buttonSouth;//Gamepad.current.buttonEast;if (Gamepad.current.buttonNorth.wasPressedThisFrame){}if (Gamepad.current.buttonNorth.wasReleasedThisFrame){}if (Gamepad.current.buttonNorth.isPressed){}//手柄中央键if(Gamepad.current.startButton.wasPressedThisFrame){}if(Gamepad.current.selectButton.wasPressedThisFrame){}//肩键if(Gamepad.current.leftShoulder.wasPressedThisFrame){}if (Gamepad.current.rightShoulder.wasPressedThisFrame){}if(Gamepad.current.leftTrigger.wasPressedThisFrame){}if(Gamepad.current.rightTrigger.wasPressedThisFrame){}

在这里插入图片描述

这篇关于【100个 Unity实用技能】☀️ | Unity InputSystem中拿到触摸屏幕的坐标,鼠标的坐标等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/519316

相关文章

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

韦季李输入法_输入法和鼠标的深度融合

在数字化输入的新纪元,传统键盘输入方式正悄然进化。以往,面对实体键盘,我们常需目光游离于屏幕与键盘之间,以确认指尖下的精准位置。而屏幕键盘虽直观可见,却常因占据屏幕空间,迫使我们在操作与视野间做出妥协,频繁调整布局以兼顾输入与界面浏览。 幸而,韦季李输入法的横空出世,彻底颠覆了这一现状。它不仅对输入界面进行了革命性的重构,更巧妙地将鼠标这一传统外设融入其中,开创了一种前所未有的交互体验。 想象

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

Unity3D自带Mouse Look鼠标视角代码解析。

Unity3D自带Mouse Look鼠标视角代码解析。 代码块 代码块语法遵循标准markdown代码,例如: using UnityEngine;using System.Collections;/// MouseLook rotates the transform based on the mouse delta./// Minimum and Maximum values can