Unity 3d新输入系统如何获取动作绑定名称

问题描述 投票:0回答:1

我需要知道调用我的函数的绑定的名称是什么。但在

InputAction.CallbackContext
变量中,此信息缺失。

enter image description here

这是我的做法:

private void OnDisable()
{
    movingBinds.PlayerMovingMap.Moves.performed -= ctx => MoveIt(ctx);
    
}

private void MoveIt(InputAction.CallbackContext ctx)
{
    Debug.Log(ctx);
}

按下 A 时上下文变量的控制台输出(绑定名称

Left
):

{ action=PlayerMovingMap/Moves[/Keyboard/w,/Keyboard/s,/Keyboard/a,/Keyboard/d] phase=Performed time=5,94887570000014 control=Key:/Keyboard/a value=(0,0, -1,0) interaction= }

我按下了按键,即 Vecto2 值,但没有绑定名称。但我需要它,因为如果玩家决定将其密钥更改为

Left
,我就会得到 scr*wed。

如何在调用函数时获取绑定名称

MoveIt

谢谢你

c# unity-game-engine
1个回答
1
投票

你可以这样得到:

var binding = ctx.action.GetBindingForControl(ctx.control);
Debug.log(binding.value.name);

或者一行:

var compositePart = ctx.action.GetBindingForControl(ctx.control).Value.name
© www.soinside.com 2019 - 2024. All rights reserved.