using System; using UnityEngine; using UnityEngine.InputSystem; public class InputManager : MonoBehaviour, GameInput.IPlayerActions { public static InputManager Instance { get; private set; } private GameInput _input; public event Action OnMove_Event; public event Action OnJump_Event; private void Awake() { if (Instance != null && Instance != this) { Destroy(gameObject); return; } Instance = this; _input = new GameInput(); _input.Player.SetCallbacks(this); } private void OnEnable() => _input?.Player.Enable(); private void OnDisable() => _input?.Player.Disable(); private void OnDestroy() => _input?.Dispose(); public void OnMove(InputAction.CallbackContext ctx) { OnMove_Event?.Invoke(ctx.ReadValue()); } public void OnJump(InputAction.CallbackContext ctx) { if (ctx.phase == InputActionPhase.Started) OnJump_Event?.Invoke(); } }