gpt4 book ai didi

c# - 新Unity Input系统1.0.0下如何处理多键输入

转载 作者:行者123 更新时间:2023-12-05 04:58:57 25 4
gpt4 key购买 nike

我正在尝试学习新的 Unity 输入系统。在之前的Unity输入系统中,

if (Input.GetKeyDown("f"))
//do something when key 'f' is pressed
if (Input.GetKeyDown("g"))
//do something when key 'g' is pressed
if (Input.GetKeyDown("h"))
//do something when key 'h' is pressed
if (Input.GetKeyDown("j"))
//do something when key 'j' is pressed

将沿着 f、g、h、j 的按键执行任何定义的操作。

在新的 Unity 输入系统中,有 InputAction,我可以通过它定义 Action Maps、Actions 和 Properties。然后我可以实现如下所示的函数,这些函数可以在播放器对象的检查器下从 PlayerInput 调用。

public void OnKey_F(InputAction.CallbackContext context)
{
if (context.started)
Debug.Log("Pressed F");
}
public void OnKey_G(InputAction.CallbackContext context)
{
if (context.started)
Debug.Log("Pressed G");
}
public void OnKey_H(InputAction.CallbackContext context)
{
if (context.started)
Debug.Log("Pressed H");
}
public void OnKey_J(InputAction.CallbackContext context)
{
if (context.started)
Debug.Log("Pressed J");
}

在新的 Unity 输入系统下,这是执行与上述相同功能的正确方法吗?我找到的教程主要是关于 WASD 运动的,我已经弄清楚它是如何工作的(二维向量)。但是,我不确定这种需要多个键才能实现多种功能的情况。

最佳答案

有几种方法可以做到这一点,所以很抱歉,我仍然没有 100% 完成此表单,但我想我会分享一个简单的实现,它在多次按键时对我来说效果很好,即完全绕过了检查员的大部分工作。

首先选择 Player Input Map Assets 并确认“生成 C# 类”按钮已激活并应用。

然后在 MonoBehavior 脚本中,我们实例化该类,并添加内联回调函数:

PlayerInputClass Inputs;

void Awake(){
Inputs = new PlayerInputClass();
Inputs.Enable();

// Examples. You can add as many as you want.

// You can put the ContextCallback to use
Inputs.Player.Move.performed += ctx => Movement = ctx.ReadValue<Vector2>();

// You can complete ignore it
Inputs.Player.Roll.performed += ctx => _RollInputFlag = true;

// You can define a function to handle the press
Inputs.Player.OtherAction.performed += FunctionThatRuns();
}

我通常选择翻转标志,以便脚本可以准确决定何时响应和恢复标志。

注意这里的Player是 Action 图名,后面的名字是实际的 Action 名。这也很好,因为 Intellisense 会介入并提供帮助。

关于c# - 新Unity Input系统1.0.0下如何处理多键输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63750945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com