UDN
Search public documentation:

KeyBindsCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 输入 & 输出主页 > 按键绑定

按键绑定


概述


虚幻引擎 3 中的按键绑定具有很强的灵活性,而且大多数都是在配置文件中进行定义的。它可以处理虚幻脚本,但是它还有一个非常好用的功能,使操作变得更加轻松。

定义


按键绑定在几个属性内部进行定义。

  • Name - 按键绑定的名称。它可以是别名或者映射的按键。
  • Command - 在激活这个按键的时候要执行的命令。
  • Control - 为激活这个按键绑定需要按下 control 键。
  • Control - 为激活这个按键绑定需要按下 shift 键。
  • Alt - 为这个要激活的按键绑定需要按下 Alt。
  • bIgnoreCtrl - 如果按下了 control 键,那么就会忽略这个按键绑定。
  • bIgnoreShift - 如果按下了 shift 键,那么就会忽略这个按键绑定。
  • bIgnoreAlt - 如果按下了 alt 键,那么就会忽略这个按键绑定。

按键绑定别名


Name(名称) 与任何映射的按键都不匹配时,那么为按键绑定另取个名字。然后可以将别名按键绑定作为命令使用。这已经设计好了,所以多个按键可以映射到一个别名(或多个别名)。它在别名的命令非常复杂或者经常被复制的时候尤其有用。

在这个别名的按键绑定中,按键绑定可以控制 停靠 / 蹲着 的方式。这个别名被称为 GBA_Duck,而且在激活它的时候会调用 Duck 并将输入变量 aUp 设置为 -1.0,绝对轴设置为 100。在取消激活这个别名的时候,它会调用 UnDuck 并将输入变量 aUp 设置为 -1.0,同时绝对轴为 100。

  Bindings=(Name="GBA_Duck",Command="Duck | onrelease UnDuck | Axis aUp Speed=-1.0 AbsoluteAxis=100")
  

因此,要将这个别名映射到几个按键,就要像这样进行操作。在这个示例中,将蹲着映射到键盘上的按键 "C" 上以及 XBox 360 控制器的 "A" 按钮。

  Bindings=(Name="C",Command="GBA_Duck")
  Bindings=(Name="XboxTypeS_A",Command="GBA_Duck")
  

按键绑定链


可以链接在配置文件中定义的按键绑定执行一些命令。通道分割符号允许您将一些执行函数链接在一起,这样将所有这些执行函数绑定到同一个按键。

  Bindings=(Name="BackSpace",Command="TurnAround | SwitchToRocketLauncher | StartFire")
  

下面的命令不必须是执行函数,因此您将可以创建更多的基于事件的代码。这个按键绑定将会在按下左鼠标按钮的时候执行 StartFire,而在释放左鼠标按钮的时候执行 StopFire。它将会使您察觉什么时候按下并释放的按键。

  Bindings=(Name="LeftMouseButton",Command="StartFire | onrelease StopFire")
  

按键绑定 onrelease 修饰符


这个 onrelease 修饰符允许按键绑定只在释放 按键 / 按钮 的时候激活下面的命令。

按键绑定变量


Axis

这个 axis 修饰符通常会将浮点变量设置在 -1.f 和 1.f 范围内。这个范围规则的主要例外情况是在模拟设备是鼠标的情况下。它们最适用于模拟类型控件,例如,操纵杆。应该在 Controller、Input 或任何它们的子类(例如 PlayerController 或 PlayerInput)中定义这个变量。应该将这个变量定义为:

  var input float aMouseX; // 其中 aMouseX 是这个轴的名称
  

那么可以如下所示使用这个变量:

  Bindings=(Name="MouseX",Command="Axis aMouseX")
  

轴还有一些您可以在变量名称后面追加的属性。

  • AbsoluteAxis - 它是通过使用这个乘法器在增量时间过程中缩放输入值的预处理器。将其定义为一个整数。
  • DeadZone - 如果这个值一点也没有改变输入数据上的绝对差,那么忽略输入数据。
  • Invert - 它是使用这个数量倒置输入值的预处理器。
  • Speed - 它是这个轴的变化的速度。

按钮

这个按钮修饰器会根据按键状态将字节变量设置为 0 或 1。应该在 Controller、Input 或任何它们的子类(例如 PlayerController 或 PlayerInput)中定义这个变量。应该将这个变量定义为:

  var input byte bAltFire; // 其中 bAltFire 是按钮的名称
  

那么可以如下所示使用这个变量:

  Bindings=(Name="RightMouseButton",Command="Button bAltFire")
  

计数

它大多数情况下用于模拟类型控件,因为它可以计数从这个控件中收集的样本的数量,并将字节变量设置为这个值。应该将这个变量定义为:

  var input byte bXAxis; // 其中 bXAxis 是样本计数的名称
  

那么可以如下所示使用这个变量:

  Bindings=(Name="MouseX",Command="Count bXAxis")
  

它大多数情况下用于执行控件平滑处理,例如鼠标平滑处理。

触发器

它可以自动创建一个触发器,将一个字节作为目标变量。应该将这个变量定义为:

  var input byte bLook; // 其中 bLook 是这个变量的名称
  

那么可以如下所示使用这个变量:

  Bindings=(Name="L",Command="Toggle bLook")
  

按键绑定触发器技巧


您可以使用按键绑定设置新的按键绑定。因此,您可以就使用按键绑定创建一个简单的触发器。第一次按下 V 的时候,它将会执行会将按键绑定设置为 SwitchToLit 的 SwitchToWireframe。接下来在按下 V 后,它会执行可以将按键绑定重新设置为 SwitchToWireframe 的 SwitchToLit。它会创建一个可以触发的按键。

  Bindings=(Name="SwitchToWireframe",Command="viewmode wireframe | SetBind V SwitchToLit")
  Bindings=(Name="SwitchToLit",Command="viewmode lit | SetBind V SwitchToWireframe")
  Bindings=(Name="V",Command="SwitchToWireframe")
  

按键绑定到虚幻脚本函数


它们被称为执行函数。总的来说,该系统允许您将使用虚幻脚本编写的函数直接映射到一个按键。一个简单的执行函数样本主要包括将执行函数放到您的自定义玩家控制器中。

YourPlayerController.uc
  exec function MyCustomExecFunction(int ParameterA)
  {
    `Log("User executed my custom exec function with "$ParameterA);
  }
  

下面在配置文件中创建一个绑定。

  Bindings=(Name="K",Command="MyCustomExecFunction")
  

如何在虚幻脚本中设置按键绑定


运行时,您可以在虚幻引擎 3 内部动态地创建或充值按键绑定。在具有这个功能的 Input(输入) 中有三个函数。

  • GetBind(const out Name Key) - 它会返回一个是当前绑定到这个按键的命令字符串。
  • SetBind(const out name BindName, string Command) - 它会将一个按键设置为这个新命令并将其保存到这个配置中。

但是,这些函数需要具有玩家输入对象实例的访问权限。只有获得了这项权限,您才可以使用。

  local PlayerController PlayerController;
  local WorldInfo WorldInfo;
  
  WorldInfo = class'WorldInfo'.static.GetWorldInfo();
  
  if (WorldInfo != None)
  {
    PlayerController = WorldInfo.GetALocalPlayerController();
    if (PlayerController != None && PlayerController.PlayerInput != None)
    {
      // 您现在具有本地玩家控制器的输入对象实例的访问权限
      PlayerController.PlayerInput.SetBind('J', "MyCustomExecFunction 1");
    }
  }
  

可映射按键


这是一个被映射到虚幻引擎 3 中的按键的列表。

键盘

功能键

  • F1 - 功能 1。
  • F2 - 功能 2。
  • F3 - 功能 3。
  • F4 - 功能 4。
  • F5 - 功能 5。
  • F6 - 功能 6。
  • F7 - 功能 7。
  • F8 - 功能 8。
  • F9 - 功能 9。
  • F10 - 功能 10。
  • F11 - 功能 11。
  • F12 - 功能 12。

字母按键

  • A - 字每 A。
  • B - 字母 B。
  • C - 字母 C。
  • D - 字母 D。
  • E - 字母 E。
  • F - 字母 F。
  • G - 字母 G。
  • H - 字母 H。
  • I - 字母 I。
  • J - 字母 J。
  • K - 字母 K。
  • L - 字母 L。
  • M - 字母 M。
  • N - 字母 N。
  • O - 字母 O。
  • P - 字母 P。
  • Q - 字母 Q。
  • R - 字母 R。
  • S - 字母 S。
  • T - 字母 T。
  • U - 字母 U。
  • V - 字母 V。
  • W - 字母 W。
  • X - 字母 X。
  • Y - 字母 Y。
  • Z - 字母 Z。

特殊键

  • Escape - Escape(退出)键。
  • Tab - Tab 键。
  • Tilde - ~(波浪号)。
  • ScrollLock - 滚动锁。
  • Pause - 暂停键。
  • one - 1。
  • two - 2。
  • three - 3。
  • four - 4。
  • five - 5。
  • six - 6。
  • seven - 7。
  • eight - 8。
  • nine - 9。
  • zero - 0。
  • Underscore - _(下划线)。
  • Equals - =(等号)。
  • Backslash - \(反斜线)。
  • LeftBracket - [(左括号)。
  • RightBracket - ](右括号)。
  • Enter - 回车键或数字键盘中的回车键。
  • CapsLock - 大写锁定。
  • Semicolon - ;(分号)。
  • Quote - '(引号)。
  • LeftShift - 左侧的 shift 键。
  • Comma - ,(逗号)。
  • Period - .(句点)。
  • Slash - /(斜线)
  • RightShift - 右侧的 Shift 键。
  • LeftControl - 左侧的 control 键。
  • LeftAlt - 左侧的 alt 键。
  • SpaceBar - 退格条。
  • RightAlt - 右侧 alt 键。
  • RightControl - 右侧 control 键。
  • Left - 左方向键。
  • Up - 上方向键。
  • Down - 下方向键。
  • Right - 右方向键。
  • Home - Home 键。
  • End - End 键。
  • Insert - Insert(插入)键。
  • PageUp - 向上翻页。
  • Delete - Delete(删除)键。
  • PageDown - 向下翻页。
  • NumLock - 数字锁定。
  • Divide - 数字键盘 /。
  • Multiply - 数字键盘 *。
  • Subtract - 数字键盘 -。
  • Add - 数字键盘 +。
  • PageDown - 向下翻页。
  • NumPadOne - 数字键盘 1。
  • NumPadTwo - 数字键盘 2。
  • NumPadThree - 数字键盘 3。
  • NumPadFour - 数字键盘 4。
  • NumPadFive - 数字键盘 5。
  • NumPadSix - 数字键盘 6。
  • NumPadSeven - 数字键盘 7。
  • NumPadEight - 数字键盘 8。
  • NumPadNine - 数字键盘 9。
  • NumPadZero - 数字键盘 0。
  • Decimal - 数字键盘小数点。

鼠标

  • LeftMouseButton - 左鼠标按钮。
  • RightMouseButton - 右鼠标按钮。
  • ThumbMouseButton - 主要的鼠标上用拇指摸的按钮。
  • ThumbMouseButton2 - 次要的鼠标上用拇指摸的按钮。
  • MouseScrollUp - 向上滚动的鼠标滑轮。
  • MouseScrollDown - 向下滚动的鼠标滑轮。
  • MouseX - 在 X 轴上的鼠标运动。
  • MouseY - 在 Y 轴上的鼠标运动。

XBox360 控制器

  • XboxTypeS_LeftThumbStick - 左拇指操纵杆作为按钮按。
  • XboxTypeS_RightThumbStick - 右拇指操纵杆作为按钮按。
  • XboxTypeS_DPad_Up - 控制台方向向上。
  • XboxTypeS_DPad_Left - 控制台方向向左。
  • XboxTypeS_DPad_Right - 控制台方向向右。
  • XboxTypeS_DPad_Down - 控制台方向向下。
  • XboxTypeS_Back - 返回按钮。
  • XboxTypeS_Start - 开始按钮。
  • XboxTypeS_Y - Y 按钮。
  • XboxTypeS_X - X 按钮。
  • XboxTypeS_B - B 按钮。
  • XboxTypeS_A - A 按钮。
  • XboxTypeS_LeftShoulder - 左肩按钮。
  • XboxTypeS_RightShoulder - 右肩按钮。
  • XboxTypeS_LeftTrigger - 作为按钮按下的左侧触发器。
  • XboxTypeS_RightTrigger - 作为按钮按下的右侧触发器。
  • XboxTypeS_LeftTriggerAxis - 按下一半的左侧触发器。
  • XboxTypeS_RightTriggerAxis - 按下一半的右侧触发器。
  • XboxTypeS_LeftX - 在作为模拟控件使用的时候左边大拇指摸的操纵杆水平位置。
  • XboxTypeS_LeftY - 在作为模拟控件使用的时候左边大拇指摸的操纵杆垂直位置。
  • XboxTypeS_RightX - 在作为模拟控件使用的时候右边大拇指操纵杆水平位置。
  • XboxTypeS_RightY - 在作为模拟控件使用的时候右边大拇指操纵杆垂直位置。