返回

Unity 2020:输入系统封装失效之解决之道

前端

导言:
随着技术不断进步,游戏开发引擎也不断更新,带来新功能和改进,以提升开发人员的体验。Unity 2020 就是一个这样的更新,它引入了一系列令人兴奋的新功能,包括对输入系统的重大改进。然而,对于从较早版本升级的开发人员来说,这些改进也带来了新的挑战,其中之一就是输入系统封装的失效。

问题
在 Unity 2018 中,输入系统被封装在一个名为 InputManager 的类中,它提供了对键盘、鼠标和操纵杆等输入设备的统一访问。然而,在 Unity 2020 中,InputManager 已被弃用,取而代之的是新的 InputSystem API。这导致了输入系统封装的失效,给开发人员带来了升级项目的困难。

InputSystem API 的变化:
为了解决这一问题,理解 InputSystem API 在 Unity 2020 中的变化至关重要。新的 API 采用组件驱动的设计,其中每个输入设备都由一个组件表示。这些组件位于名为 Input System Package 的包中,需要添加到项目中才能使用。

解决方案:
要解决输入系统封装失效的问题,开发人员需要遵循以下步骤:

  1. 安装 Input System Package: 从 Unity Package Manager 安装 Input System Package。这将为项目添加必需的组件。
  2. 添加 Input System Provider: 向场景添加 Input System Provider 组件。此组件充当输入设备和游戏之间的桥梁。
  3. 配置 Input Actions: 使用 Input Action Manager 创建一组输入动作。这些动作将表示游戏中可用的输入。
  4. 绑定 Input Events: 将输入动作绑定到游戏中的事件处理程序。这将允许游戏响应输入事件。

示例代码:
以下示例代码展示了如何配置 Input System Provider 和绑定 Input Actions:

// 添加 Input System Provider
public class InputSystemProvider : MonoBehaviour
{
    void Awake()
    {
        InputSystem.AddDevice(new Mouse());
        InputSystem.AddDevice(new Keyboard());
    }
}

// 创建 Input Actions
public class InputActions : ScriptableObject
{
    public InputAction move;
    public InputAction jump;
}

// 绑定 Input Events
public class PlayerController : MonoBehaviour
{
    private InputActions inputActions;

    void Awake()
    {
        inputActions = new InputActions();
        inputActions.Enable();

        inputActions.move.performed += ctx => Move(ctx.ReadValue<Vector2>());
        inputActions.jump.performed += ctx => Jump();
    }
}

总结:
通过遵循这些步骤,开发人员可以解决 Unity 2020 中输入系统封装失效的问题。理解 InputSystem API 的变化并正确配置组件对于成功升级项目至关重要。通过这样做,开发人员可以利用 Unity 2020 的新输入系统,并继续创建引人入胜的游戏体验。