InputAction Assets,输入行为资产,可以理解成自定义的输入行为(动作)的集合。一个输入动作可以由一种或者多种输入信号组成。比如“前进”这个动作,可以被“W”键触发,也可以被“↑”方向键触发,甚至可以被手柄的“↑”键触发。 Action Map:行为映射表,一个Input Actions可以有多个Map。每个Map下面又有许多Action,可...
usingUnityEngine;usingUnityEngine.InputSystem;publicclassTestingInputSystem:MonoBehaviour{privateRigidbodyrigidbody;privatevoidAwake(){rigidbody=GetComponent<Rigidbody>();}publicvoidJump(InputAction.CallbackContextcontext){if(context.performed){Debug.Log("Jump!"+context.phase);rigidbody.AddForce(Vector3.up...
InputActionMap是一组InputAction的集合. InputActionAsset是一组InputActionMap的集合。观察刚刚生成的InputSystemAsset.cs 可以看到有InputActionAsset类型的成员变量,并且在构造函数中使用了FromJson函数生成这个asset。构造结束后,从这个asset中找到Player这个ActionMap以及其中的Move这个action.private...
新建Input Actions 给其命名(名称无所谓),笔者命名为 Test Input Controls 完成后,选中该文件勾选Generate C# Class 点击 Apply后 Unity 会为我们生成一个 Action 的包装类,方便后续在代码中引用。 Action Map 可以理解为一个组织和管理输入动作的一种方式。通过将相关的输入动作放在同一个Action Map中,可以更好地...
InputActions资产 在Project任意位置右键菜单创建InputActions资产,里面可以设置多个InputAction InputActions文件是一个Json格式的文件 双击打开创建的资产,会弹出一个窗口,有三个区域 Action Maps:多个Action的组合 Actions:Action Maps中包含的Action,每一个就相当于之前在脚本中定义的InputAction变量 ...
1.PlayerInput组件实现交互 Invoke Unity Events实现 Invoke C Sharp Events实现 2.C#脚本实现交互 CallbackContext 3.切换ActionMap 4.触摸屏交互 新的inputsystem较于老的inputsystem兼容性更强,也让我们不用再去关注输入的条件判断。所以还是值得学习一下。
让我们打开一个InputActionAsset文件,如Packages/com.unity.inputsystem/InputSystem/Plugins/PlayerInput/DefaultInputActions.inputactions。这里会接触几个新名词,如InputActionMap(InputAction的集合)、InputControlScheme(用于筛选InputControl)、InputBinding(用于绑定InputAction和InputControl)等。
可以参考官方,毕竟官方的东西靠谱!https://docs.unity.cn/Packages/com.unity.inputsystem@1.3/manual/QuickStartGuide.html 1)右键/Create/InputActions,新建一个输入控制器; 2)双击打开,你会看到下面一个弹窗; 3)添加一个ActionMaps/Actions,再设置一下属性。
}input_MoveDir=newVector2(input_X,input_Y);}privatevoidOnMoveCanceled(UnityEngine.InputSystem.InputAction.CallbackContextobj){input_X=0;input_Y=0;input_MoveDir=Vector2.zero;}privatevoidFixedUpdate(){Move();}privatevoidMove(){playerRB.MovePosition(playerRB.position+input_MoveDir*moveSpeed*Time....
fireAction.canceled += FireAction_canceled; fireAction.started += FireAction_started; moveAction = playerInput.currentActionMap.FindAction("move"); } private void FireAction_started(InputAction.CallbackContext context) { throw new System.NotImplementedException(); ...