Unity Input System 按键代码动态绑定学习笔记
C#代码如下:
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public class KeyBindingCtrl : MonoBehaviour
{
public TMP_Text keyText;
private InputAction upAction;
private InputAction downAction;
private void Start()
{
UpActionBinding();
DownActionBinding();
}
void UpActionBinding()
{
// 创建输入动作
upAction = new InputAction("UpAction");
// 添加带两个修饰键的绑定
upAction.AddCompositeBinding("ButtonWithTwoModifiers")
.With("Modifier1", "<Keyboard>/ctrl")
.With("Modifier2", "<Keyboard>/shift")
.With("Button", "<Keyboard>/w");
// 添加回调
upAction.performed += ctx => OnUpArrowAction();
upAction.Enable();
}
void DownActionBinding()
{
downAction = new InputAction(
name: "DownAction",
type: InputActionType.Button
);
downAction.AddCompositeBinding("OneModifier")
.With("Modifier", "<Keyboard>/ctrl")
.With("Binding", "<Keyboard>/s");
downAction.performed += ctx => OnDownArrowAction();
downAction.Enable();
}
void OnDownArrowAction()
{
/* Debug.Log("Ctrl + s pressed!");*/
keyText.text = "Ctrl + s pressed!";
}
private void OnUpArrowAction()
{
/* Debug.Log("Ctrl+Shift+T pressed!");*/
keyText.text = "Ctrl+Shift+W pressed!";
// 执行逻辑
}
private void OnDestroy()
{
upAction?.Dispose();
downAction?.Dispose(); // Cleanup
}
}