【问题标题】:Unity New Input System, can't enable controls after disabling themUnity 新输入系统,禁用后无法启用控件
【发布时间】: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 事实并非如此,因为我在第一次暂停后仍然可以暂停和取消暂停。 (只是我取消暂停后播放器控件不起作用,但暂停控件仍然起作用)
  • 那么这里的代码不够我们解决问题。

标签: c# unity3d


【解决方案1】:

这个问题似乎在新版本的输入系统中得到了解决。要解决此问题,需要将输入系统更新到 0.2.8+

升级时可能会遇到this 问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-25
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多