unity 新的输入系统input system 使用
1:首先在包管理器里安装 搜索"input system"
2: 创建input acionts
3:生成代码 勾选后点击右小角应用就可以自动生成相关代码
4:代码调用
创建一个自定义脚本
A:在类中创建变量 NewControls 就是上面自动生成的输入控制类的名字
NewControls inputActions;
B:在Awake中初始化inputActions
private void Awake() { inputActions = new NewControls(); }
C: 创建onEnble 和Ondisablef方法
private void OnEnable() { inputActions.Enable(); } private void OnDisable() { inputActions.Disable(); }
D: 实现相关方法
private void OnEnable() { inputActions.PlayMove.move.performed += Move_performed; inputActions.PlayMove.jump.performed += Jump_performed; inputActions.Enable(); } private void OnDisable() { inputActions.PlayMove.move.performed -= Move_performed; inputActions.PlayMove.jump.performed -= Jump_performed; inputActions.Disable(); } private void Jump_performed(UnityEngine.InputSystem.InputAction.CallbackContext obj) { //obj就是传递过来的参数 obj.ReadValueAsButton() } private void Move_performed(UnityEngine.InputSystem.InputAction.CallbackContext obj) { //这里获得传递过来的参数是一个Vector2类型 pos = obj.ReadValue<Vector2>(); }
补充:
Action Type
Value 默认,主要用于状态连续更改的输入,例如鼠标的移动,手柄的遥感。如果有多个设备绑定这个Action,只会发送其中一个设备(最受控制的)的输入 Button 用于每次按下时触发的Action Pass-Through 和Value一样,区别在于如果有多个设备绑定这个Action,会发送所有设备的输入