分类:Unity、C#、VS2015

创建日期:2016-04-21

一、简介

在Input类中,Key与物理按键对应,例如键盘、鼠标、摇杆上的按键,其映射关系无法改变,程序员可以通过按键名称或者按键编码KeyCode来获得其输入状态。例如,CetKeyDown(KeyCode.A)会在按A键时返回true。

下面是Input类的成员变量:

【Unity】7.1 Input类的方法和变量-LMLPHP

下面是Input类的成员函数:

【Unity】7.1 Input类的方法和变量-LMLPHP

二、输入轴(Axis)和输入管理器(Input Manager)

输入轴(Axis)用来模拟平滑变化的输入,如摇杆的变化、方向盘的转动等,需要在输入管理器中配置。

输入轴包含正负两个虚拟按键(Positive Button和Negative Button) 。 可以把一个输入轴想象成一个滑动条,左边取值为-1,右边取值为1。当按下正按键时,滑块向右边的正向移动;当按下负按键时,滑块向左边的负向移动。滑块的位置对应输入轴的当前取值。

Button是输入管理器(Input Manager)中定义的虚拟按键,通过名称来访问。开发者可以根据需要创建和命名虚拟按键,并设置与物理按键(及其组合)的消息映射。例如,Unity默认为用户创建了名为【Fire1】的虚拟按键,并将鼠标左键和左【Ctrl】键的消息映射给Fire1。

打开菜单栏中的Edit-> Proect->Settings->Input项可打开输入管理器。

使用虚拟按键的好处就是可以灵活地配置输入,并且在游戏发布后可以让玩家自定义键位输入。因此,在开发中推荐使用虚拟按键。

可在此界面中添加新的输入轴,另外也可在这里更改每个轴的设置。每个轴可以对应操纵杆、鼠标的两个按钮或两个键盘按键。

下面解释上图界面中各参数的含义。

名称 (Name)

用来在脚本中检查该轴的字符串名称。

描述名称 (Descriptive Name)

配置 (Configuration) 对话框输入选项卡中显示的正名称,用于独立构建。

描述负名称 (Descriptive Negative Name)

配置 (Configuration) 对话框输入选项卡中显示的负名称,用于独立构建。

负按钮 (Negative Button)

用于在负方向移动轴。

正按钮 (Positive Button)

用于在正方向移动轴。

备选负按钮 (Negative Button)

用来在负方向移动轴的备选按钮。

备选正按钮 (Alt Positive Button)

用来在正方向移动轴的备选按钮。

重力 (Gravity)

在没有按任何按钮时,轴下降到 0 的每秒单位速度。

死亡 (Dead)

模拟死区的大小。所有在这个范围内的模拟设备值将映射为 0。

灵敏度 (Sensitivity)

轴向目标值移动的每秒单位速度。该功能仅用于数码设备。

捕捉 (Snap)

如果启用,按下相反方向的按钮时,轴值将自动归零。

反向 (Invert)

如果启用,按下负按钮 (Negative Button) 将提供正值,反之亦然。

类型 (Type)

控制此轴的输入类型。

轴 (Axis)

连接设备的轴将控制这个轴。

操纵杆 (Joy Num)

连接操纵杆将控制这个轴。

这些设置可用来微调输入的外观和感觉。他们在编辑器均带有工具提示。

三、在脚本中使用输入轴

下面的的脚本可以查询当前状态:

value = Input.GetAxis ("Horizontal");

轴值在 -1 到 1 之间。中间位置为 0。 这是在操纵杆输入和键盘输入的情况下。

但是,鼠标增量和 Window Shake 增量是指鼠标或视窗在最后一帧移动的距离。这意味着,当用户快速移动鼠标时,它可能大于 1 或小于 -1。

您可以创建多个名称相同的轴。在获得输入轴时,绝对值最大的轴将被返回。这使得为一种以上输入设备指定同一个轴名称成为可能。例如,为键盘输入创建一个轴,并且为操纵杆创建另一个名称相同的轴。如果用户使用操纵杆,输入将来自操纵杆,否则,输入将来自键盘。有了这种方法,编写脚本时就不需要再考虑输入的来源了。

四、键盘按键和鼠标按钮名称

要映射一个键到一个轴,您必须在检视器中的正按钮 (Positive Button) 或负按钮 (Negative Button) 属性中输入按键名称。

按键名称遵循以下惯例:

标准键: "a"、"b"、"c"、...

数字键:"1"、"2"、"3"、 ...

方向键:“上 (up)”、“下 (down)”、“左 (left)”、“右 (right)”

小键盘键:"[1]"、"[2]"、"[3]"、"[+]"、"[=]"

修改键:"right shift"、"left shift"、"right ctrl"、"left ctrl"、"right alt"、"left alt"、"right cmd"、"left cmd"

鼠标按钮:"mouse 0"、"mouse 1"、"mouse 2", ...

操纵杆按钮(从任意操纵杆):"joystick button 0"、"joystick button 1"、"joystick button 2"、 ...

操纵杆按钮(从指定操纵杆):"joystick 1 button 0"、"joystick 1 button 1"、"joystick 2 button 0"、...

特殊键:"backspace"、"tab"、"return"、"escape"、"space"、"delete"、"enter"、"insert"、"home"、"end"、"page up"、"page down"

功能键:"f1"、"f2"、"f3"、...

在脚本界面和检视器中,用来识别按键的名称是一样的:

value = Input.GetKey ("a");

04-28 23:57