【教程】Unity Old InputSystem 使用参考笔记

本文详细介绍Unity旧版输入系统的配置与使用方法,包括输入管理器的各项参数解释、鼠标、键盘、游戏外设及移动设备的输入处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


注意:本笔记内容适用于 Unity 旧版输入系统,允许转载,无需注明出处。


参考书籍:Unity5.X 从入门到精通
开发平台:Unity 2018版本
编程语言:CSharp
编程平台:Visual Studio 2018 or Visual Code

2022/12/06 笔记完善中…

一、前言

  尽管 Unity 在 2021 版本后推荐使用 New Input System 作为开发首选,但依然不能阻止开发者在针对特定项目或Demo上使用 Old Input System 作为开发首选。本文重点围绕旧输入系统作出记录。

二、旧版输入管理器


在这里插入图片描述
  位于 Project Setting 面板下的 Input 栏目。主要提供可快速创建与编辑的输入管理选项。初始工程环境,提供至多18个有效使用的常规输入轴配置。例如 :

  • Horizontal & Vertical :被用于 WASD 按键移动
  • MouseX & MouseY:被用于平面鼠标的上下水平移动
  • Fire1 & Jump:鼠标左键 与 空格键交互。

注意:输入类轴配置的增多与减少依赖于手动配置 Size 大小。原则上递增值即可,在确认需要减少 Size 值需慎重,避免将已配置项完全删除。同时应注意轴配置名称,重复的命名配置下,将优先应用第一个匹配的轴名称配置。


2.1 旧版输入轴配置说明

  • Name:输入轴名称,使用 GetAxis(string axisName) 获取轴配置。
    • 注意:当存在多个同名轴名称,以与之匹配的 第一个轴 信息作为配置基础。
  • Descriptive (Negative) Name:描述字段。用于阐述 正/负 双向按键行为的具体内容。
    • 任何按键行为都具备双向性,用于否定对立按键的行为。
    • 举个例子
      • 攻击行为:短按松手 = 平A  长按松手 = 蓄力A
      • 移动行为:按下汽车引擎逐渐启动,速度由低至高。松手汽车不会立刻停下,而是速度由高至低衰减至停下。
  • (Negative/Positive) Button:负/正 向的物理按键绑定。通常情况下关联键盘现有按键。
  • Alt (Negative/Positive) Button:同上,但作为备选按键存在。
    • 例如 WASD 以外可以使用 ↑↓←→ 作为替代按键使用。
  • Gravity:联系 Input Manager 下 Axis,输入系统依赖于 Vector2 系列的轴值作为判断依据。
    • 例如前进为 0-1 的过渡,让角色移动由一个由慢至快前进的过程。或是设定值为1,直接切换,无需 0-1 过渡过程。
  • Dead:小于该值的任何输入值(不论正负值)都会视为0。
    • 例如在遥杆控制器上的运用较为常见。
  • Sensitivity:输入设备的操作灵敏度。
    • 对于键盘输入,该值越大则响应时间越快,该值越小越平滑。
    • 对于鼠标输入,设置该值会对鼠标的实际移动距离按比例缩放
  • Snap:如果该值为true,当轴收到负按键的输入信号时,轴的数值会立即置为0。
    • 仅用于键/鼠标输入|
  • Invert:转置轴输入。
    • 如果该值为true,正按键会发送负值,负按键会发送正值
    • 例如 小圈子游戏 —— IdentyV 中 “宿伞之魂” 的摇铃 DeBuff 效果。
  • Type:输入轴的类型。
    • 按键对应Key/Mouse类型。
    • 鼠标移动和滚轮滑动对应Mouse Movement类型
    • 摇杆设置为Joystick Axis
    • 窗口移动消息设置为WIndow Movement|
  • Axis:要映射的设备输入轴(摇杆、鼠标、手柄等)
  • Joy Num:设置使用哪个摇杆作为消息输入。
    • 默认接受所有摇杆的输入,仅用于输入轴和非按键输入

0.1 Input类 成员变量

成员变量描述
acceleration获取设备当前在三维空间中的线性加速度只读
accelerationEventCount得到上一帧的加速度参数数据长度
accelerationEvents得到上一帧的加速度数据列表(分配临时变量)只读
anyKey是否有按键按下只读
anyKeyDown当有任意按键按下的第一帧返回true只读
compass罗盘属性(仅支持手持设备)只读
compensateSensors是否根据屏幕方向补偿感应器
compositionCursorPos当前IME组合字符串的光标位置
compositionString用户通过IME输入端组合字符串
deviceOrientation操作系统提供的设备方向(只读)
gyro返回默认的陀螺仪
imeCompositionMode设置IME组合模式
imelsSelected当前是否启用了IME输入键盘
inputString得到当前帧的键盘输入字符串只读
location设备当前的位置属性(仅支持手持设备)只读
mousePosition鼠标位置的像素坐标只读
multiTouchEnabled系统是否支持多点触摸
simulateMouseWithTouches屏幕触控模拟鼠标点击
touchCount当前所有触摸状态列表长度只读
touches当前所有触摸状态列表(分配临时变量)只读
touchSupported返回应用程序正在运行的设备是否支持触摸输入

0.2 Input类 成员函数

成员函数描述
GetAccelerationEvent()返回指定的上一帧加速度测量数据(不分配临时变量)
GetAxis()根据名称得到虚拟输入轴的值
GetAxisRaw()根据名称得到虚拟坐标轴的未使用平滑过滤的值
GetButton()如果指定名称的虚拟按键被按下,返回true
GetButtonDown()指定名称的虚拟按键被按下的那一帧,返回true
GetButtonUp()指定名称的虚拟按键被松开的那一帧,返回true
GetJoystickNames()返回当前连接的所有摇杆的名称数组
GetKey()当指定按键被按下时返回true
GetKeyDown()当指定按键被按下的那一帧返回true
GetKeyUp()当指定按键被松开的那一帧返回true
GetMouseButton()指定的鼠标按键是否按下
GetMouseButtonDown()指定的鼠标按键按下的那一帧返回true
GetMouseButtonUp()指定的鼠标按键松开的那一帧返回true
GetTouch()返回指定的触摸数据对象(不分配临时变量)
IsJoystickPreconfigured配置默认的摇杆输出(只限Linux)
ResetInputAxes重置所有输入,调用该方法后所有方向轴
  • Key:与物理按键对应。可通过按键名称或按钮编码KeyCode获取输入状态。
  • Button:输入管理器(Input Manager)中定义的虚拟按键。
  • Axis:模拟平滑变化的输入,例如摇杆、方向盘。

一、鼠标输入

1.1 鼠标输入 成员变量

成员变量描述
mousePosition得到当前鼠标位置Vector3

1.2 鼠标输入 成员方法

成员函数描述
GetMouseButtonDown()鼠标按键按下的第一帧返回true
GetMouseButtonUp()鼠标按键松开的第一帧返回true
GetMouseButton()鼠标按键按下期间一直返回true
GetAxis("Mouse X")得到一帧内鼠标在水平方向的移动距离
GetAxis("Mouse Y")得到一帧内鼠标在垂直方向的移动距离

Unity中,鼠标位置用屏幕像素坐标表示,屏幕左下角为坐标原点(0, 0),右上角为(Screen.width, Screen.height)

  • Screen.width:屏幕分辨率的宽度
  • Screen.height:屏幕分辨率的高度

mousePosition:Vector3类型 (x, y, z)

  • x:水平坐标
  • y:垂直坐标
  • z:始终为0

二、键盘操作

2.1 键盘输入 成员方法

成员方法描述
GetKey()按键按下期间返回true
GetKeyDown()按键按下的第一帧返回true
GetKeyUp()按键松开的第一帧返回true
GetAxis("Horizontal")GetAxis("Vertical")用方向键或W、A、S、D键来模拟-1到1的平滑输入

2.2 常用按键名与KeyCode编码

键盘按键NameKeyCode
字母键A、B、C…Za、b、c…zABCZ
数字键0~90~9Alpha0~Alpha9
功能键F1~F12f1~f12F1~F12
退格键backspaceBackspace
回车键returnReturn
空格键spaceSpace
退出键escEsc
Tab键tabTab
上下左右方向键up、down、left、rightUpArrowDownArrowLeftArrowRightArrow
左、右Shift键left shift、right shiftLeftShiftRightShift
左、右Alt键left alt、right altLeftAltRightAlt
左、右Ctrl键left ctrl、right ctrlLeftCtrlRightCtrl

三、游戏外设输入

3.1 外设输入 成员方法

成员方法描述
GetAxis()得到输入轴的值
GetAxisRaw()得到未经平滑处理的输入轴的数值
GetButton()虚拟键按下期间一直返回true
GetButtonDown()虚拟键按下的第一帧返回true
GetButtonUp()虚拟键松开的第一帧返回true
  • Unity默认为用户创建 Fire1、Fire2、Fire3、Jump以及虚拟轴Horizontal和Vertical。

四、移动设备的输入

IOS与Android系统中的操作通过触摸完成。(以前是按键)

4.1 移动端输入 成员变量

成员变量描述
multiTouchEnabled系统是否支持多点触摸
simulateMouseWithTouches屏幕触控模拟鼠标点击
touchCount当前所有触摸状态列表长度只读
touches当前所有触摸状态列表(分配临时变量)只读
touchSupported返回应用程序正在运行的设备是否支持触摸输入

4.2 移动端输入 成员方法

成员方法描述
GetTouch()返回指定的触摸数据对象(不分配临时变量)

4.3 结构体Touch的变量

通过GetTouch()或者touches可访问移动设备的触摸数据,数据保存在Touch的结构体中,结构体Touch的变脸如下所示:

变量说明
fingerld触摸数据的唯一索引id
position触摸的位置
deltaPosition触摸位置的改变量
deltaTime距离上次触摸数据变化的时间间隔
taoCount单击计数
phase触摸的状态描述

通过吊桶phase可访问当前触摸状态,状态如下所示:

变量说明
Began手指刚触碰屏幕
Moved手指在屏幕上移动
Stationary手指触碰屏幕并从上一帧起没有移动
Ended手指离开屏幕
Cancled系统取消了跟踪触摸

五、自定义输入

创建自定义虚拟按键:

  • 打开Unity菜单栏 -> Editor -> Project Setting
  • 选择Input分栏

默认情况下Unity创建了18个输入轴(Axes),具体参数如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值