【发布时间】:2019-04-23 16:46:07
【问题描述】:
我正在尝试新的Unity Input System,到目前为止效果很好。然而,我遇到了一个小障碍。我想实现一个“暂停”系统。游戏暂停时,应禁用播放器控件。当游戏恢复时,玩家控制应该恢复正常工作。这一半有效。我在游戏暂停时成功禁用了播放器控件,但是当游戏恢复时,控件仍然不起作用。
负责移动的部分类:
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;
}
}
我做错了吗?如何实现所需的行为?
【问题讨论】:
-
出于好奇,如果在将
IsPaused设置为false 后启用播放器控件会怎样? -
我怀疑通过禁用控件,您已经禁用了处理更改暂停状态的东西!
-
@SharpNip 如果 IsPaused 设置为 false,则控件不会响应。
-
@Draco18s 事实并非如此,因为我在第一次暂停后仍然可以暂停和取消暂停。 (只是我取消暂停后播放器控件不起作用,但暂停控件仍然起作用)
-
那么这里的代码不够我们解决问题。