Unity Input System最简单使用

开始学的是 Input Manager 比较好理解,Input System却不好理解,教程也找了很多,感觉都讲的不清楚,我这里做一个最简单的用 Input System 添加鼠标左键和右键的效果。

1. 安装 Input System 包

首先这个功能不是内置的,需要自行安装。打开Unity上方工具栏中的 WindowPackage Manager打开Unity插件包管理界面, Package Manager是Unity的包管理工具,可以安装、卸载、升级相关的包。左上角选择 Unity Registry,在输入框搜索到结果之后,点击右下角的安装即可,安装好之后,会有一个绿色的钩。

2. 启用 Input System

系统默认使用 Input Manager(Old) ,在 Edit → Project settings → Player中

之后unity会重启。

3. 新建配置文件

在一个场景中,Asset目录新建 Setting目录,放置项目的配置文件。然后右键

Create → Input Actions。我改名叫 InputActions。

4. 配置事件集合

选中刚刚新建的 InputActions,如上图,点击Edit Asset

点击左上角,选择Add Control Schema,然后新建一个Actions Map(可以理解为一大组事件的集合,方便可以灵活切换),然后新建 Actions,比如我新建的LeftClickRightClick表示鼠标左右键点击。

点击后边的加号,选择 Add binding,添加事件绑定。

在Path里选择Mouse(鼠标)-> Left Button

5. 生成C#文件

勾选,然后点击Apply即可。

6. 添加游戏物体

添加一个游戏物体,然后添加组件 PlayerInput,Actions选择我们新建的那个InputActions。

7. 脚本测试

创建一个脚本,并且绑定到游戏对象上,比如我的 InputDemo.cs ,使用我们刚刚第5步自动生成的那个cs文件,运行游戏,点击鼠标即可。

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

public class InputDemo : MonoBehaviour {
  private InputActions playerInputActions;

  void Awake() {
    playerInputActions = new InputActions();
  }

  private void OnEnable() {
    playerInputActions.UI.Enable();
  }

  private void OnDisable() {
    playerInputActions.UI.Disable();
  }

  private void OnMouseDown() {
    print("down");
  }

  private void Update() {
    // IsPressed会有多次
    if (playerInputActions.UI.LeftClick.IsPressed()) {
      print("点击left键");
    }

    // trigger只执行一次
    if (playerInputActions.UI.RightClick.triggered) {
      print("点击right键");
    }
  }
}
相关推荐
小贺儿开发3 小时前
Unity 家居视频遥控(细节优化)
科技·unity·程序员·udp·视频·工具·通信
淡海水4 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
小小数媒成员16 小时前
UGUI 性能优化(详细,全,深入)
开发语言·unity·游戏引擎
林川~011 天前
Unity新输入系统使用笔记
unity·input system
小贺儿开发2 天前
Unity 结合百度AI开放平台 手写文字识别
人工智能·科技·学习·unity·云服务·文字识别·手写文字
goujunwe2 天前
GEO 评估方法:如何自测你的内容,会不会被 AI 引用
搜索引擎·网络安全·游戏引擎·全文检索·中文分词
林川~012 天前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
yi碗汤园2 天前
MQTT消息队列遥测传输协议
网络·网络协议·unity
林川~013 天前
Unity 常用 API 与核心类全解:从生命周期到协程,附性能避坑清单(Unity 6 适配)
unity·游戏引擎·常用api
sensen_kiss3 天前
CPT306 Coursework 1 个人游戏作业——坦克大战
unity·游戏程序·游戏策划