Unity新输入系统使用笔记

Unity新的输入系统使用办法

插件安装及设置

  1. 打开Unity上方工具栏中的Window --->Package Manager打开Unity插件包管理界面
  2. 在Package Manager界面的选择Unity Regiestry--->Input System进行安装,如下图:

    3.设置使用新的输入系统:
    打开 Edit → Project Settings → Player
    展开 Other Settings 区域
    找到 Active Input Handling 选项
    从下拉菜单中选择 Input System Package (New)
    如果项目中还有旧输入代码未迁移,可选择 Both(同时支持新旧系统)
    点击 Apply 确认------Unity Editor 会自动重启

创建InputActions

  1. 项目Project中右键点击Creater若出现InputActions选项证明插件安装成功,点击创建InputActions。

    2.双击InputAction打开进行编辑

    3.配置action和绑定
    以创建"移动"和"跳跃"两个动作为例:
    点击 "+" 新建一个 Action Map,命名为 Gameplay
    在 Action Map 中点击 "+" 添加 Action:
    创建 MoveControl,Action Type 设为 Value,Control Type 设为 Vector2
    创建JumpControl,Action Type 设为 Button
    为 MoveControl添加绑定:
    点击 MoveControl 右侧的 "+" → 选择 Add 2D Vector Composite(WASD 自动生成四个方向)
    分别设置 Up = W,Down = S,Left = A,Right = D
    为 JumpControl 添加绑定:点击 "+" → 选择键盘按键(如 Space)或手柄按钮
    点击 Save Asset 保存

在脚本中读取输入

1.创建PlayerMovement脚本,控制移动`

csharp 复制代码
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerMovement : MonoBehaviour
{
    private Vector2 moveInput;

    // 【重点1】方法名必须是 OnMoveControl,对应你设置的 Action 名字
    // 【重点2】参数必须是 InputValue,而不是 CallbackContext
    public void OnMoveControl(InputValue value)
    {
        // 读取二维向量
        moveInput = value.Get<Vector2>(); 
        Debug.Log("接收到移动输入: " + moveInput); // 加上这个测试是否成功接收
    }

    public void OnJumpControl(InputValue value)
    {
        // 对于 Button 类型的 Action,检测是否按下
        if (value.isPressed)
        {
            Debug.Log("跳跃!");
        }
    }

    void Update()
    {
        // 【重点3】确保你的物体真的在移动
        if (moveInput != Vector2.zero)
        {
            Vector3 move = new Vector3(moveInput.x, 0, moveInput.y);
            transform.Translate(move * Time.deltaTime * 5f);
        }
    }
}

2.添加组件,为要移动的物体添加PlayerMovement 和PlayerInput组件,PlayerInput组件添加新建的inputaction

保存运行就可以!!!

官方文档

相关推荐
Aman19843 小时前
Claude Code做Unity项目移植(一):从零散工具到团队式
unity·游戏开发·vibe coding·claude code·项目迁移
地狱为王5 小时前
Unity使用VoxLock实现语音隔离
unity·游戏引擎·音频处理·voxlock
Jmyd01238 小时前
博物馆数字展厅系统架构设计:实景采集到云渲染全链路
unity·系统架构·博物馆·数字展厅·博物馆数字化
weixin_4242946712 小时前
对于未加入 Script Execution Order 的脚本
unity
暴走约伯12 小时前
【VFX工具链源码拆解 03】告别机械劳动(下):材质字典映射批处理与智能纹理槽识别
unity·游戏引擎·材质
Wanda121412 小时前
机器人与机电一体化3D数字孪生机器-Day9
人工智能·3d·unity·机器人·数字孪生
暴走约伯13 小时前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
平行云2 天前
建筑BIM/3D可视化轻量级实时评审与分享方案
unity·ue5·3dsmax·实时云渲染·云桌面·云游戏·建筑bim
2501_915106322 天前
Windows 上开发 Unity iOS,使用 KXBuild 进行真机调试、性能采样与打包 ipa
windows·vscode·unity·ios·个人开发·swift·敏捷流程
FFFFujige2 天前
【Unity】一个的Dots用Ruhanka踩坑记录
unity·游戏引擎