(M)unity代码部分c#脚本的创建与添加,new input system的配置,添加input action配置表

本文详细介绍了如何在Unity中使用新InputSystem进行代码管理和配置,包括手动创建和编辑inputactions,使用PlayerInput组件以及通过C#代码实现输入值的读取,以提升游戏的灵活性和适应性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件管理

在这里插入图片描述创建代码文件夹,创建人物板块,创建c#脚本,等待自动编译

2.代码添加到人物中(或拖拽)

在这里插入图片描述
3.添加后双击进入代码编辑器

4.unity升级为新的input system

新的Input System可以更方便地处理不同的输入设备,并根据项目需求进行配置和映射,提高游戏的灵活性和适应性


在这里插入图片描述


在下边active input handling中选择new的那个,apply,unity自动重启


找到这个new package,在window->package manager中

在这里插入图片描述


点击下边install,等待安装


设置new input system的配置文件的例子

1.在文件中创建输入系统文件夹

在这里插入图片描述

法一 手动配置input action配置表

2.里面添加input actions,在最最下边,创建,即为上图中的input ctrl文件

在这里插入图片描述

3.双击input ctrl文件打开配置窗口,可以添加需要检测的按键

action map中的不同条件可以在进行切换时候转化成不同的操作内容(旁边的actions)

在这里插入图片描述
例如这样设置一个map叫gameplay,他对应的动作叫movement,动作类型value,控制类型二维向量
点击该movement action后边的加,添加上下左右组合,可以通过对这四个完成按键的设置
这里的按键设置时的监听,连着什么输入设备就监听什么,手柄键盘之类

在这里插入图片描述
可以通过添加配置表来区分输入设备,方便快速筛选显示,键盘按键不会被区分,但是手柄配置可以

在这里插入图片描述
在这里插入图片描述
//(删掉这个示例用的input ctrl文件了)

法二 用unity自动生成默认的input action配置表

为小人添加Player Input组件(这是new input system下的组件,可以完成人物基本的输入配置)
将这个文件放在input system文件夹下,创建,可以看见这个文件已经有了基本的按键配置

在这里插入图片描述
在这里完成配置

在这里插入图片描述
删除

法三 代码完成配置

1.对这个input actions文件添加c#文件(打勾,apply)
在这里插入图片描述
创建结果如下

在这里插入图片描述

2.在小人身上挂着的脚本上加入这个类的实例,如此可以调用这个类中的方法

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
//添加新输入系统的库如上
public class PlayerController : MonoBehaviour
{

    public PlayerInputControl inputControl;

    //进入游戏,创建实例
    private void Awake()
    {
        inputControl = new PlayerInputControl();
    }

    //当前物体被启用时调用onenable()
    private void OnEnable()
    {
        inputControl.Enable();
    }
    //然后start
    //物体关闭,ondisable
    private void OnDisable()
    {
        inputControl.Disable();
    }
}

3.实现读取移动的数值

也就是读取这个二维向量,数值在PlayerInputControl实例下的map下的action中,调用读取数值方法,读取二维向量,传入到新创建的public Vector2 inputDirection中

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
//添加新输入系统的库如上
public class PlayerController : MonoBehaviour
{

    public PlayerInputControl inputControl;
    //创建public变量,可以显示在人物的inspector中
    public Vector2 inputDirection;

    //进入游戏,创建实例
    private void Awake()
    {
        inputControl = new PlayerInputControl();
    }

    //当前物体被启用时调用onenable()
    private void OnEnable()
    {
        inputControl.Enable();
    }
    //然后start
    //物体关闭,ondisable
    private void OnDisable()
    {
        inputControl.Disable();
    }
    //刷新时读取value
    private void Update()
    {
        inputDirection = inputControl.Gameplay.Move.ReadValue<Vector2>();
    }
}

可以看到play后按上下左右后inputDirection变量会变化

在这里插入图片描述

### 使用Unity Input System实现角色或物体的移动控制 在现代游戏开发中,`Input System` 是 Unity 提供的一个强大工具来处理各种类型的输入。通过配置 `Input Actions` 和编写相应的脚本逻辑,可以轻松实现跨平台的角色或物体移动控制。 #### 配置Input Action资产文件 为了使项目能够响应不同种类的操作(如移动),首先需要定义一组动作并将其保存在一个 `.inputactions` 文件里。这可以通过打开 **Window -> Package Manager** 安装最新版本的 `Input System` 插件之后,在菜单栏选择 **Assets/Create/Input Actions...** 来完成[^1]。 #### 编辑Action MapActions设置 对于想要实现的基本移动功能来说,通常会有一个名为 "Player" 的映射表(Action Map),其中包含了多个具体行为(Actions),比如: - Move (Vector2): 对应于玩家希望沿水平轴(X)和垂直轴(Y)施加力的方向向量。 这些设定允许开发者灵活地调整哪些物理按键/屏幕区域应该被解释成何种形式的动作指令[^4]。 #### 脚本编程部分 下面是一个简单的C#类例子,它展示了怎样利用上述提到过的资源去驱动场景内的对象运动: ```csharp using UnityEngine; using UnityEngine.InputSystem; public class CharacterController : MonoBehaviour { private Vector2 moveDirection; // 存储来自用户的位移请求 void Update() { HandleMovement(); } public void OnMove(InputValue value){ moveDirection = value.Get<Vector2>(); } void HandleMovement(){ float horizontalSpeed = Time.deltaTime * 5f * moveDirection.x; float verticalSpeed = Time.deltaTime * 5f * moveDirection.y; transform.Translate(horizontalSpeed,0,verticalSpeed); } } ``` 此代码片段中的 `OnMove()` 方法接收由用户产生的输入事件,并更新内部状态变量;而 `HandleMovement()` 则负责基于当前的状态改变游戏角色的位置[^3]。 当涉及到移动端的支持时,则需进一步考虑触摸屏交互模式的设计。例如,创建一个虚拟摇杆(Joystick UI Element)作为替代方案之一,让其输出的数据同样能适配到之前定义好的接口上去[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值