Unity基础学习(九)输入系统全解析:鼠标、键盘与轴控制

目录

一、Input类

1. 鼠标输入

2. 键盘输入

3. 默认轴输入

(1) 基础参数

(2)按键绑定参数

(3)输入响应参数

(4)输入类型与设备参数

(5)不同类型轴的参数差异

4. 其他输入设备

二、屏幕相关

Unity Screen 类常用功能总结


一、Input类

1. 鼠标输入

  • 位置获取
    Input.mousePosition:返回屏幕坐标(左下角为原点,x向右,y向上,z始终为0)。

  • 按键检测

    GetMouseButtonDown(0/1/2):左键/右键/中键按下瞬间触发

    GetMouseButtonUp(0/1/2):按键抬起时触发

    GetMouseButton(0/1/2):按键持续按住时触发

  • 滚轮检测
    Input.mouseScrollDelta:y值为1(向上滚动)或-1(向下滚动),用于控制缩放或页面滚动。

2. 键盘输入

  • 按键检测

    GetKeyDown(KeyCode.W)/GetKeyDown("q"):按下瞬间触发(字符串需小写)。

    GetKeyUp(KeyCode.W)抬起时触发

    GetKey(KeyCode.W)持续按住时触发

    想什么键就KeyCode.出来使用,这里面是一个枚举类型,枚举了所有的按键。

  • 组合键:需自行检测多键状态,如 if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.C))

3. 默认轴输入

这个轴在这里看:Edit->Project Setting->Input Manager

        这个轴是什么呢?在 Unity 的 Input Manager 中,轴(Axes) 是一组预定义的输入配置,用于抽象化不同的输入设备(如键盘、鼠标、手柄)的操作。

        如果你想自己添加额外的轴,你直接将上面的Size进行改动即可 

这里是对上面的介绍:

轴名称作用默认输入键代码示例
Horizontal控制左右方向(如角色移动、菜单选择)键盘 A/D、手柄左摇杆左右Input.GetAxis("Horizontal")
Vertical控制上下方向(如角色移动、菜单选择)键盘 W/S、手柄左摇杆上下Input.GetAxis("Vertical")
Fire1触发攻击、交互等动作鼠标左键、键盘 Ctrl、手柄 X 键Input.GetButton("Fire1")
Fire2次要攻击或特殊技能(如射击游戏中的瞄准)鼠标右键、键盘 Alt、手柄 Y 键Input.GetButton("Fire2")
Fire3备用功能(如手雷或道具使用)键盘 Space、手柄 B 键Input.GetButton("Fire3")
Jump跳跃动作键盘 Space、手柄 A 键Input.GetButtonDown("Jump")
Mouse X鼠标横向移动(控制视角左右旋转)鼠标左右移动Input.GetAxis("Mouse X")
Mouse Y鼠标纵向移动(控制视角上下旋转)鼠标上下移动Input.GetAxis("Mouse Y")
Mouse ScrollWheel鼠标滚轮滚动(如缩放镜头、切换武器)鼠标滚轮Input.GetAxis("Mouse ScrollWheel")
Submit确认操作(如菜单按钮点击)键盘 Enter、手柄 Start 键Input.GetButtonDown("Submit")
Cancel取消操作(如返回上一级菜单)键盘 Esc、手柄 Back 键Input.GetButtonDown("Cancel")

 随便点击一个轴,可以看出里面有很多参数:

所以我们来看看这些参数是什么:

(1) 基础参数

        Name:

        作用:轴的唯一标识符,代码中通过 Input.GetAxis("轴名") 或 Input.GetButton("轴名") 调用。通用性:所有轴必填,需唯一。例如 Horizontal、Fire1、Mouse X。

Descriptive Name / Negative Descriptive Name

作用:编辑器中的显示名称(仅用于界面提示,不影响功能)。通用性:所有轴可选,通常留空。


(2)按键绑定参数

        Negative Button / Positive Button

        作用:负方向(减少值)和正方向(增加值)的按键绑定。

        适用轴类型

        按键触发轴(如 Fire1):通常只绑定一个键(如 Ctrl),负按钮可能留空。

        连续轴(如 Horizontal):绑定 A/D 或 ←/→

注意:某些轴(如 Mouse X)可能不需要手动绑定按键(由输入类型决定)。

        Alt Negative Button / Alt Positive Button

作用:备用按键绑定(兼容多设备或键位布局)。

示例Horizontal 可同时支持方向键 ←/→ 和 A/D适用性:仅对需要多键位支持的轴有意义(如移动、菜单操作)。

        小结:就是说,Unity会识别你上面这两种输入方式,只要满足一种,就都会判定为是轴触发。主按键(Negative/Positive Button)和备用按键(Alt Negative/Alt Positive Button)是并行生效的,没有优先级差异。


(3)输入响应参数

        Gravity

作用:松开按键后,轴值归零的速度(单位:单位/秒)。

通用性

按键触发轴(如 Jump):通常无效(按键是瞬时触发)。

连续轴(如 Horizontal):模拟惯性停止(如角色滑行)。

默认值3(数值越大,归零越快)。

        Dead

        作用:输入死区范围,忽略微小值(防止摇杆漂移或键盘抖动)。

通用性键盘/鼠标:通常设为 0.001(避免误触发)。

手柄摇杆:必填(如 0.2 表示摇杆偏移小于 20% 时不响应)。

Sensitivity

        作用:输入灵敏度,控制轴值变化速度(单位:单位/秒)。

通用性

按键触发轴(如 Fire1):通常无效(按键是开关式输入)。

连续轴(如 Mouse X):数值越大,输入响应越快(如 3 表示每秒达到最大值)。

Snap(✓)

        作用:同时按下正负方向按键时,轴值立即归零。适用场景:角色移动中按 A+D 时停止。通用性:仅对需要方向冲突处理的轴有意义(如 HorizontalVertical)。

Invert(✓)

        作用:反转输入方向(正负值互换)。示例:默认 Mouse Y 向上移动为正值,勾选后向下移动为正值。通用性:适用于需要反向操作的轴(如视角控制)。


(4)输入类型与设备参数

        Type

作用:定义输入源类型。

        选项

Joystick Axis:手柄摇杆或触发器(如 Horizontal 绑定手柄左摇杆)。

Mouse Movement:鼠标移动(如 Mouse XMouse Y)。

Key or Mouse Button:键盘或鼠标按键(如 Horizontal 绑定 A/D)。

注意:不同类型会影响其他参数的可用性(如 Mouse Movement 无需绑定按键)。

        Axis

作用:指定摇杆的物理轴向(仅当 Type = Joystick Axis 时生效)。

选项

4th/5th/6th Axis:手柄的额外输入(如油门、方向盘)。

X/Y/Z Axis:摇杆的水平、垂直或其他轴向。

        Joy Num

作用:指定手柄编号(支持多手柄设备)。

选项Joystick 1/2/3...:绑定特定手柄。Get Motion from all Joysticks:所有手柄通用。


(5)不同类型轴的参数差异
轴类型关键参数示例注意事项
连续轴Gravity, Sensitivity, DeadHorizontalVertical用于模拟平滑移动(如角色控制)。
按键触发轴Negative/Positive ButtonFire1Jump瞬时触发,无需响应参数(Gravity/Sensitivity)。
鼠标移动轴Type = Mouse MovementMouse XMouse Y自动读取鼠标位移,无需手动绑定按键。
手柄摇杆轴Type = Joystick Axis, Axis, DeadHorizontal(手柄左摇杆)需设置死区(Dead)防止漂移。
滚轮轴Type = Mouse MovementMouse ScrollWheel输入值为滚轮滚动速度(Input.mouseScrollDelta)。

小结:如果你的输入是一定范围的值 就获取轴,如果知识点击,则获取Button 

    • 常见轴

      Horizontal(AD键):返回-1(左)到1(右),控制左右移动。

      Vertical(WS键):返回-1(下)到1(上),控制前后移动。

      Mouse X/Y:鼠标移动速度,控制视角旋转。

    • 方法区别

      GetAxis:平滑过渡值(如0.3)。

      GetAxisRaw:直接返回-1、0、1(无过渡)。

      演示代码:

        void Update(){Debug.Log("Horizontal的值Raw" + Input.GetAxisRaw("Horizontal"));Debug.Log("鼠标的位置的值" + Input.mousePosition);Debug.Log("获取一个开火按键" + Input.GetButton("Fire1"));Debug.Log("获取鼠标滚轮" + Input.GetAxis("Mouse ScrollWheel"));Debug.Log("获取到Mouse X" + Input.GetAxis("Mouse X"));}

    4. 其他输入设备

    • 任意键检测

      Input.anyKey:任意键长按。

      Input.anyKeyDown:任意键按下瞬间。

    • 移动设备触摸

      Input.touches:获取所有触点信息(位置、移动偏移)。

      TouchPhase:触点状态(Began/Moved/Ended等)。

      启用多点触控:Input.multiTouchEnabled = true

    • 手柄

      GetButton("joystick button 0"):检测特定按钮。
    • 陀螺仪

      启用:Input.gyro.enabled = true

      获取重力/旋转数据:gyro.gravitygyro.rotationRate

    • 加速度计
      Input.acceleration:获取设备加速度(需移动端支持)。

    二、屏幕相关

            分辨率(Resolution) 指显示设备(如屏幕、图像、摄像头)中 像素(Pixel) 的总数量,通常表示为 横向像素数 × 纵向像素数。示例:1920×1080 表示横向有 1920 个像素,纵向有 1080 个像素,总像素数为 2,073,600(约 200 万像素)。
            单位:像素(Pixel),缩写为 px。

    类型描述示例
    物理分辨率显示设备的实际像素数量(硬件固定值)。手机屏幕的 2560×1440
    逻辑分辨率软件或系统使用的像素数量(可动态调整,如窗口模式下的分辨率)。Unity 中 Screen.width
    像素密度(PPI)每英寸屏幕包含的像素数量,值越高显示越细腻(如手机屏幕 vs 电视屏幕)。手机屏幕 PPI 通常 > 300。
    宽高比横向与纵向像素的比例,常见如 16:9(宽屏)、4:3(传统屏)。1920×1080 的宽高比为 16:9。

    Unity Screen 类常用功能总结

    属性/方法作用常用性注意事项
    Screen.currentResolution获取当前屏幕的物理分辨率(设备实际分辨率)。常用返回 Resolution 结构体,包含 width 和 height
    Screen.width获取当前游戏窗口的宽度(非设备分辨率)。常用游戏运行时窗口的实际宽度,受全屏/窗口模式影响。
    Screen.height获取当前游戏窗口的高度(非设备分辨率)。常用游戏运行时窗口的实际高度,受全屏/窗口模式影响。
    Screen.sleepTimeout设置屏幕休眠模式。常用设为 SleepTimeout.NeverSleep 可防止屏幕休眠(移动端常用)。
    Screen.fullScreen设置是否全屏运行(布尔值)。不常用仅控制全屏开关,不指定模式(需配合 fullScreenMode 使用)。
    Screen.fullScreenMode设置全屏模式类型。不常用可选值:
    ExclusiveFullScreen(独占全屏)
    FullScreenWindow(无边框窗口全屏)
    MaximizedWindow(最大化窗口)
    Windowed(窗口模式)。
    Screen.autorotateToLandscapeLeft允许屏幕自动转向为横屏(Home 键在左侧)。不常用移动端专用,需在 Player Settings 中启用自动旋转。
    Screen.autorotateToLandscapeRight允许屏幕自动转向为横屏(Home 键在右侧)。不常用同上。
    Screen.autorotateToPortrait允许屏幕自动转向为竖屏(正常方向)。不常用同上。
    Screen.autorotateToPortraitUpsideDown允许屏幕自动转向为倒置竖屏(上下颠倒)。不常用同上。
    Screen.orientation强制指定屏幕方向(覆盖自动旋转)。不常用可选值:
    Portrait(竖屏)
    LandscapeLeft(横屏左)等。
    Screen.SetResolution()设置窗口分辨率和显示模式。不常用示例:
    SetResolution(1920, 1080, true) 或
    SetResolution(1920, 1080, FullScreenMode.ExclusiveFullScreen)
    移动端不推荐使用

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

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

    相关文章

    VBA将PDF文档内容逐行写入Excel

    VBA是无法直接读取PDF文档的,但结合上期我给大家介绍了PDF转换工具xpdf-tools-4.05,先利用它将PDF文档转换为TXT文档,然后再将TXT的内容写入Excel,这样就间接实现了将PDF文档的内容导入Excel的操作。下面的代码将向大家演示如何实…

    Spring Boot之MCP Client开发全介绍

    Spring AI MCP(模型上下文协议,Model Context Protocol)客户端启动器为 Spring Boot 应用程序中的 MCP 客户端功能提供了自动配置支持。它支持同步和异步两种客户端实现方式,并提供了多种传输选项。 MCP 客户端启动器提供以下功能: 多客户端实例管理 支持管理多个客户端实…

    [题解]2023CCPC黑龙江省赛 - Folder

    来源:F.Folder - Codeforces题意:给定由 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le 10^5) n(1≤n≤105)个结点组成的树,每次操作可将一棵子树接到其他结点上。求将树转换为一棵斜树的最小操作次数。关键词:思维(签到)题解:斜…

    string[字符串中第一个的唯一字符][蓝桥杯]

    使用哈希表解决 class Solution { public:int firstUniqChar(string s) {int arr[26];for(int i0;i<s.size();i){arr[s[i]-a];}for(int i0;i<s.size();i){if(arr[s[i]-a]1)return i;}return -1;} };

    【深度学习-Day 8】让数据说话:Python 可视化双雄 Matplotlib 与 Seaborn 教程

    Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

    Flink 实时数据一致性与 Exactly-Once 语义保障实战

    在构建企业级实时数仓的过程中,“数据一致性” 是保障指标准确性的核心能力,尤其是在金融、电商、医疗等对数据敏感度极高的场景中。Flink 作为流批一体的实时计算引擎,其内建的 Exactly-Once 语义为我们提供了强有力的保障机制。本篇将围绕如何实现端到端的数据一致性、如何…

    傅利叶十周年,升级核心战略:“有温度”的具身智能蓝图

    5月9日&#xff0c;傅利叶十周年庆典暨首届具身智能生态峰会在上海正式召开。本次大会以“十年共创&#xff0c;具身成翼”为主题&#xff0c;汇聚了来自通用机器人与医疗康复领域的顶尖专家学者、合作伙伴与投资机构&#xff0c;共同探索具身智能在未来十年的技术应用与生态发…

    Docker中mysql镜像保存与导入

    一、Docker中mysql镜像保存 Docker 的 MySQL 镜像保存通常有两种场景&#xff1a;一种是保存镜像本身的修改&#xff08;如配置、初始化数据&#xff09;&#xff0c;另一种是持久化保存容器运行时产生的数据&#xff08;如数据库表、用户数据&#xff09;。以下是具体方法&am…

    大模型微调指南之 LLaMA-Factory 篇:一键启动LLaMA系列模型高效微调

    文章目录 一、简介二、如何安装2.1 安装2.2 校验 三、开始使用3.1 可视化界面3.2 使用命令行3.2.1 模型微调训练3.2.2 模型合并3.2.3 模型推理3.2.4 模型评估 四、高级功能4.1 分布训练4.2 DeepSpeed4.2.1 单机多卡4.2.2 多机多卡 五、日志分析 一、简介 LLaMA-Factory 是一个…

    记录一次window2012r2安装配置oracle11g的过程-出现的错误以及解决方法

    Windows server 2012R2安装Oracle11g 出现的错误 同事反馈正常安装oracle后&#xff0c; 使用命令行 sqlplus sys / as sysdba出现“ORA-12560:TNS:协议适配器错误”。 去services.msc服务状态里面 OracleOraDb11g_home1TNSListener服务停止状态&#xff0c;而且无法启动。 …

    2003-2020年高铁线路信息数据

    2003-2020年高铁线路信息数据 1、时间&#xff1a;2003-2020年 2、来源&#xff1a;Chinese High-speed Rail and Airline Database&#xff0c;CRAD 3、指标&#xff1a;高铁线路名称、起点名、终点名、开通时间、线路长度(km)、设计速度(km/h&#xff09;、沿途主要车站 …

    【论文阅读】FreePCA

    FreePCA: Integrating Consistency Information across Long-short Frames in Training-free Long Video Generation via Principal Component Analysis 原文摘要 问题背景 核心挑战&#xff1a; 长视频生成通常依赖在短视频上训练的模型&#xff0c;但由于视频帧数增加会导致数…

    Linux:线程同步与互斥

    目录 线程互斥 锁 初始化 销毁 加锁 解锁 线程同步 条件变量 初始化 销毁 等待条件满足 唤醒等待 pthread_cond_signal pthread_cond_broadcast 生产者消费者模型 3种关系 2种角色 1个交易场所 POSIX信号量 初始化 销毁 等待 发布 线程互斥 互斥相关…

    LeetCode --- 448 周赛

    题目列表 3536. 两个数字的最大乘积 3537. 填充特殊网格 3538. 合并得到最小旅行时间 3539. 魔法序列的数组乘积之和 一、两个数字的最大乘积 由于数据都是正数&#xff0c;所以乘积最大的两个数&#xff0c;本质就是找数组中最大的两个数即可&#xff0c;可以排序后直接找到…

    Azure Document Intelligence

    Azure Document Intelligence(以前称为 Form Recognizer)是一项云服务&#xff0c;可用于从文档中提取文本、键值对、表等信息。下面是一个使用 Python SDK 进行文档转换和提取信息的基本示例。 1. 安装依赖 首先&#xff0c;你需要安装 azure-ai-formrecognizer 库&#xff0c…

    51单片机快速成长路径

    作为在嵌入式领域深耕18年的工程师&#xff0c;分享一条经过工业验证的51单片机快速成长路径&#xff0c;全程干货无注水&#xff1a; 一、突破认知误区&#xff08;新手必看&#xff09; 不要纠结于「汇编还是C」&#xff1a;现代开发90%场景用C&#xff0c;掌握指针和内存管…

    SQLite数据库加密(Java语言、python语言)

    1. 背景与需求 SQLite 是一种轻量级的关系型数据库,广泛应用于嵌入式设备、移动应用、桌面应用等场景。为了保护数据的隐私与安全,SQLite 提供了加密功能(通过 SQLCipher 扩展)。在 Java 中,可以使用 sqlite-jdbc 驱动与 SQLCipher 集成来实现 SQLite 数据库的加密。 本…

    《AI大模型应知应会100篇》第53篇:Hugging Face生态系统入门

    第53篇&#xff1a;Hugging Face生态系统入门 ——从模型获取到部署的全流程实战指南 &#x1f4cc; 摘要 在人工智能快速发展的今天&#xff0c;Hugging Face已成为自然语言处理&#xff08;NLP&#xff09;领域最具影响力的开源平台之一。它不仅提供丰富的预训练模型、强大…

    什么是向量数据库?向量数据库和关系数据库有什么区别?

    什么是向量数据库&#xff1f; 向量数据库是一种专门设计用来存储、索引和查询向量数据的数据库系统。在当今的人工智能和机器学习领域中&#xff0c;向量数据库变得越来越重要&#xff0c;尤其是在处理高维数据如图像、音频和文本等非结构化数据时。 主要用途 相似度搜索&…

    关于甲骨文(oracle cloud)丢失MFA的解决方案

    前两年&#xff0c;申请了一个招商的多币种信用卡&#xff0c;然后就从网上撸了一个oracle的免费1h1g的服务器。 用了一段时间&#xff0c;人家要启用MFA验证。 啥叫MFA验证&#xff0c;类似与短信验证吧&#xff0c;就是绑定一个手机&#xff0c;然后下载一个app&#xff0c;每…