InputActionMap是一组InputAction的集合. InputActionAsset是一组InputActionMap的集合。观察刚刚生成的InputSystemAsset.cs 可以看到有InputActionAsset类型的成员变量,并且在构造函数中使用了FromJson函数生成这个asset。构造结束后,从这个asset中找到Player这个ActionMap以及其中的Move这个action.private...
wasPressedThisFrame) { //开启名称为UI的ActionMap playerInput.SwitchCurrentActionMap("UI"); } } public void Jump(InputAction.CallbackContext context) { Debug.Log(context); if(context.performed) { Debug.Log("Jump!" + context.phase); rigidbody.AddForce(Vector3.up, ForceMode.Impulse); } }...
playerInput.currentActionMap.FindAction("Jump").performed += OnJump; playerInput.currentActionMap.FindAction("Move").performed += OnMove; } private void OnDisable() { playerInput.currentActionMap.FindAction("Jump").performed -= OnJump; playerInput.currentActionMap.FindAction("Move").performed ...
InputAction Assets,输入行为资产,可以理解成自定义的输入行为(动作)的集合。一个输入动作可以由一种或者多种输入信号组成。比如“前进”这个动作,可以被“W”键触发,也可以被“↑”方向键触发,甚至可以被手柄的“↑”键触发。 Action Map:行为映射表,一个Input Actions可以有多个Map。每个Map下面又有许多Action,可...
1.PlayerInput组件实现交互 Invoke Unity Events实现 Invoke C Sharp Events实现 2.C#脚本实现交互 CallbackContext 3.切换ActionMap 4.触摸屏交互 新的inputsystem较于老的inputsystem兼容性更强,也让我们不用再去关注输入的条件判断。所以还是值得学习一下。
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.6/api/UnityEngine.InputSystem.Composites.html 注意:如果中途要对action map进行修改或添加新的action,必须先把当前action map disable掉,修改完成再enable。 三,事件绑定 为action添加事件,有以下几个回调时机:started、performed、canceled ...
2、在想要控制的物体上挂载组件Player Input,如上图所示组件,之后绑定对应的Input Actions。 如果想要创建跳跃,射击之类的动作,可以双击创建创建的Input Actions或者选中此文件单击Edit asset 进入配置界面 点击加号分别创建Action Map,Action并绑定按键 如上图所示,Behavior有很多种模式,这里使用的Send Messages,使用此模式...
当使用了Input System之后,在Project工程目录内的某个文件夹内点击鼠标右键,可以看到我们可以创建一个Input System。 而后输入一个名字,我们的一个输入系统就创建好了。 这里需要解释一下,一个游戏可以有多个输入系统。每一个输入系统只是定义了ActionMap和按键的映射,和游戏本身逻辑无关,所以许多时候,如果游戏存在多个...
安装InputSystem 菜单栏/Window/Package Manager/Input System 工程面板内 右键-->创建Input Actions 选中New Controls改名为PlayerControls 然后属性 面板按下Edit asset Action Maps添加:PlayerMovement Actions添加:New action 改名为MovementAction Properties项 修改ActionType=Pass Through ...
voidInputTest(){GameInput inputAction=newGameInput();//GameInput为场景中的InputSystem控制器inputAction.Enable();inputAction.Gameplay.MouseDown.performed+=ctx=>{Debug.Log("按下:"+UnityEngine.InputSystem.Mouse.current.position.ReadValue());};inputAction.Gameplay.MouseDrag.performed+=ctx=>{Debug.Log(...