Unity 中 Input Actions 使用

Unity 中 Input Actions 使用笔记

一、Input Actions 简介

Input Actions 是 Unity 新的输入系统,它提供了一种更灵活、强大且统一的方式来处理玩家输入,支持多种输入设备,如键盘、鼠标、手柄等,能方便地管理和配置输入操作。

二、代码示例说明

以下代码是在 Unity 项目中使用新输入系统(Input System)的 GameInput 脚本示例:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameInput : MonoBehaviour
{
    private GameControl gameControl;

    private void Awake()
    {
        gameControl = new GameControl();
        gameControl.Player.Enable();
    }

    public Vector3 GetMovementDirectionNormalized()
    {
        Vector2 inputVector2 = gameControl.Player.Move.ReadValue<Vector2>();

        Vector3 direction = new Vector3(inputVector2.x, 0, inputVector2.y);
        direction = direction.normalized;

        return direction;
    }
}

三、Input Actions 使用步骤解析

(一)创建输入动作资产

在 Unity 中,需先通过 Assets -> Create -> Input Action 创建一个输入动作资产(如代码中的 GameControl)。在该资产中可定义各种输入动作,比如移动、跳跃、攻击等。

(二)定义动作映射(Action Map)

  1. 在创建好的 GameControl 资产中,默认有一个名为 Default 的动作映射。可根据项目需求重命名或添加新的动作映射,比如创建一个名为 Player 的动作映射,专门用于处理玩家相关的输入操作。
  2. 动作映射就像是一组输入操作的集合,可以为不同的游戏场景或角色控制模式设置不同的动作映射。

(三)添加动作(Action)

在 Player 动作映射下,添加所需的动作。例如:
移动(Move):选择动作类型为 Value,并设置其类型为 Vector 2,用于接收玩家的二维移动输入(如 WASD 或方向键)。

(四)绑定输入设备

为每个动作添加输入绑定。以 Move 动作为例:
对于键盘输入,可绑定 W、A、S、D 键或方向键,将其映射到 Move 动作的 Vector 2 值上。
若支持手柄操作,可绑定手柄的左摇杆,使其也能控制 Move 动作。

(五)生成 C# 脚本

GameControl 资产的 Inspector 面板中,点击 Generate C# Class 按钮。这将自动生成一个 C# 脚本,该脚本包含了与配置的输入动作相关的类和方法,用于在项目中访问和处理输入。

(六)脚本中初始化与启用

  1. 声明变量:在脚本中声明一个对应输入动作资产类的变量,如 private GameControl gameControl; ,用于存储和操作输入动作。
  2. 初始化与启用:在 Awake 方法中,使用 gameControl = new GameControl(); 实例化输入动作资产对象,然后通过 gameControl.Player.Enable(); 启用特定的输入动作组(这里是 Player 组)。启用后,系统才能接收和处理相关输入。

(七)读取输入值

GetMovementDirectionNormalized 方法中展示了读取输入值的过程:

  1. 获取二维输入向量Vector2 inputVector2 = gameControl.Player.Move.ReadValue(); 这行代码从 Player 动作组的 Move 动作中读取当前的输入值,返回一个二维向量,通常对应水平和垂直方向的输入。
  2. 转换为三维方向向量并归一化:将二维输入向量转换为三维方向向量 Vector3 direction = new Vector3(inputVector2.x, 0, inputVector2.y); ,并通过 direction = direction.normalized; 对其进行归一化处理,确保向量长度为 1,用于控制角色移动等场景,使移动速度保持稳定。

四、Input Actions 的优势

  • 统一管理:Input Actions 可将不同类型的输入设备(键盘、鼠标、手柄等)的输入操作统一管理,在一个地方定义和配置所有输入相关逻辑,提高开发效率。
  • 灵活性高:可以方便地修改输入映射,比如重新定义某个按键对应的游戏动作,而无需大量修改代码。同时,支持热插拔输入设备,能在运行时动态检测和响应新连接的设备。
  • 更好的扩展性:适合开发复杂的游戏交互系统,便于添加新的输入动作和功能,适应不同游戏场景和玩法的需求。

你可能感兴趣的:(unity,游戏引擎)