Я пробую новую систему ввода Unity , и пока она отлично работает. Тем не менее, я столкнулся с небольшой загадкой. Я хочу реализовать систему «паузы». Когда игра поставлена на паузу, управление игроком должно быть отключено. И когда игра возобновится, управление игроками должно вернуться в рабочее состояние. Эта половина работает. Я успешно отключаю элементы управления игрока, когда игра приостановлена, но когда игра возобновляется, элементы управления все еще не работают.
Часть класса, ответственная за движение:
public class ShapeMover : MonoBehaviour
{
public InputManager controls;
private float _lastFallTime;
private float _fallSpeed;
private ShapeSpawner _spawn;
private GameObject _shapeToMove;
private Transform _shapeToMoveTransform;
private bool _isGameOver;
private const float _leftRotationAngle = (float) -1.57079633;
private const float _rightRotationAngle = (float) 1.57079633;
private void Awake()
{
_spawn = FindObjectOfType<ShapeSpawner>();
_lastFallTime = 0f;
_fallSpeed = GameGrid.Instance.GetFallSpeed();
_isGameOver = false;
controls.Player.Movement.performed += ctx => Movement(ctx.ReadValue<Vector2>());
controls.Player.Drop.performed += ctx => Drop();
controls.Menu.Reset.performed += ctx => Restart();
controls.Menu.Pause.performed += ctx => PauseToggle();
SetShapeToMove();
}
Функция паузы в том же классе:
private void PauseToggle()
{
var currentPauseState = GameGrid.Instance.IsPaused;
//If not paused, will pause
if (!currentPauseState)
{
controls.Player.Disable();
GameGrid.Instance.IsPaused = true;
}
else
{
controls.Player.Enable();
GameGrid.Instance.IsPaused = false;
}
}
Я что-то не так делаю? Как мне добиться желаемого поведения?