清理项目目录,引入 InputModule 做多平台输入适配
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
namespace SepCore.InputModule.Runtime
|
||||
{
|
||||
public static class InputModuleDefaultActions
|
||||
{
|
||||
public static InputActionAsset Create()
|
||||
{
|
||||
InputActionAsset asset = ScriptableObject.CreateInstance<InputActionAsset>();
|
||||
|
||||
InputActionMap globalMap = new InputActionMap(nameof(InputContextId.Global));
|
||||
AddPauseAction(globalMap);
|
||||
asset.AddActionMap(globalMap);
|
||||
|
||||
InputActionMap uiMap = new InputActionMap(nameof(InputContextId.UI));
|
||||
AddNavigateAction(uiMap, nameof(InputActionId.Navigate));
|
||||
AddButtonAction(uiMap, nameof(InputActionId.Confirm), "<Keyboard>/enter", "<Keyboard>/numpadEnter", "<Gamepad>/buttonSouth");
|
||||
AddButtonAction(uiMap, nameof(InputActionId.Cancel), "<Keyboard>/escape", "<Keyboard>/backspace", "<Gamepad>/buttonEast");
|
||||
asset.AddActionMap(uiMap);
|
||||
|
||||
InputActionMap gameplayExploreMap = new InputActionMap(nameof(InputContextId.GameplayExplore));
|
||||
AddNavigateAction(gameplayExploreMap, nameof(InputActionId.Move));
|
||||
AddButtonAction(gameplayExploreMap, nameof(InputActionId.Sprint), "<Keyboard>/leftShift", "<Gamepad>/leftStickPress");
|
||||
AddButtonAction(gameplayExploreMap, nameof(InputActionId.Interact), "<Keyboard>/e", "<Gamepad>/buttonSouth");
|
||||
asset.AddActionMap(gameplayExploreMap);
|
||||
|
||||
InputActionMap dialogMap = new InputActionMap(nameof(InputContextId.Dialog));
|
||||
AddNavigateAction(dialogMap, nameof(InputActionId.Navigate));
|
||||
AddButtonAction(dialogMap, nameof(InputActionId.Confirm), "<Keyboard>/enter", "<Keyboard>/numpadEnter", "<Gamepad>/buttonSouth");
|
||||
AddButtonAction(dialogMap, nameof(InputActionId.Cancel), "<Keyboard>/escape", "<Keyboard>/backspace", "<Gamepad>/buttonEast");
|
||||
asset.AddActionMap(dialogMap);
|
||||
|
||||
InputActionMap rebindMap = new InputActionMap(nameof(InputContextId.Rebind));
|
||||
asset.AddActionMap(rebindMap);
|
||||
|
||||
return asset;
|
||||
}
|
||||
|
||||
private static void AddPauseAction(InputActionMap map)
|
||||
{
|
||||
AddButtonAction(map, nameof(InputActionId.Pause), "<Keyboard>/escape", "<Gamepad>/start");
|
||||
}
|
||||
|
||||
private static void AddButtonAction(InputActionMap map, string actionName, params string[] bindings)
|
||||
{
|
||||
InputAction action = map.AddAction(actionName, InputActionType.Button);
|
||||
foreach (string binding in bindings)
|
||||
{
|
||||
action.AddBinding(binding);
|
||||
}
|
||||
}
|
||||
|
||||
private static void AddNavigateAction(InputActionMap map, string actionName)
|
||||
{
|
||||
InputAction action = map.AddAction(actionName, InputActionType.Value);
|
||||
action.expectedControlType = "Vector2";
|
||||
action.AddCompositeBinding("2DVector")
|
||||
.With("Up", "<Keyboard>/w")
|
||||
.With("Down", "<Keyboard>/s")
|
||||
.With("Left", "<Keyboard>/a")
|
||||
.With("Right", "<Keyboard>/d");
|
||||
action.AddCompositeBinding("2DVector")
|
||||
.With("Up", "<Keyboard>/upArrow")
|
||||
.With("Down", "<Keyboard>/downArrow")
|
||||
.With("Left", "<Keyboard>/leftArrow")
|
||||
.With("Right", "<Keyboard>/rightArrow");
|
||||
action.AddBinding("<Gamepad>/leftStick");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user