论Unity_InputSystem如何使用(一)

这篇具有很好参考价值的文章主要介绍了论Unity_InputSystem如何使用(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、导入

在Window——PackageManage中搜索InputSystem,下载导入。如果搜不到,则调整为UnityRegistry。

二、更改输入模式

Edit——ProjectSettings——Player——OtherSettings——Configuration——Active Input Handling,选择旧版或者新版,也可以选择兼容。
三、使用
请使用InputSystem为一个3D对象制作通过键盘移动跳跃,鼠标攻击的脚本。

我们先采取直接使用InputAction的方式来编写脚本,而InputAction则是这个系统的核心。
是InputSystem为我们封装的一个类,作用是不必通过编写代码来获取设备的信号输入,而是直接在Inspector窗口编辑,方便我们专注于编写按键触发后的逻辑。
使用前需要引用using UnityEngine.InputSystem。

	[Header("移动")]
    public InputAction Move;
    [Header("攻击")]
    public InputAction Attack;
    [Header("跳跃")]
    public InputAction Jump;

然后我们直接在Inspector窗口编辑论Unity_InputSystem如何使用(一)

首先点击齿轮符号

论Unity_InputSystem如何使用(一)

Action——输入动作设置,设置检测哪些设备输入。

论Unity_InputSystem如何使用(一)

Action Type——动作类型:

  • Value——值类型,主要用于状态连续更改的输入设备,如鼠标移动,手柄遥感。若有多个设备绑定此Action,只会发送最受控制的输入。

  • Button——按钮类型,处理按下类型。

  • PassThrough——直通类型,与Value一样,但如果有多个设备绑定,会发送所有设备的输入。

论Unity_InputSystem如何使用(一)

  • Control  Type——控制类型: 在这里选择你想要的设备按键返回值的类型,之后在选择对应设备按键时会根据你选择的内容进行筛选。

Interaction——相互作用设置,对特殊输入进行处理,如长按,多次点击等,满足条件时才会触发(设置长按时间,点击次数等)。

论Unity_InputSystem如何使用(一)

Hold

论Unity_InputSystem如何使用(一)

  • Press Point:在Input System中,每个按键都有对应的浮点值,例如普通的按键,将会在0(未按下)和1(按下)之间,当大于等于这个值时则认为按键按下。
  • Hold Time 当按钮按下会触发started,若在松开按钮前,按住时间大于等于Hold Time则会触发performed,否则触发canceled。

MultiTap

论Unity_InputSystem如何使用(一)

多次点击,例如双击或者三连击。

  • Tap Count为点击次数。
  • Max Tap Spacing为每次点击之间的间隔(默认值为 2 * Max Tap Duration)。
  • Max Tap Duration为每次点击的持续时间,即按下和松开按键的这段时间。 当每次点击时间小于Max Tap
    Duration,且点击间隔时间小于Max Tap Spacing,点击Tap Count次,触发performed。

Press

论Unity_InputSystem如何使用(一)

  • Press Only:按下的时候触发started和performed。不触发canceled
  • Release Only: 按下的时候触发started,松开的时候触发performed
  • Press And Release: 按下的时候触发started和performed,松开的时候会再次触发started和performed。不触发canceled

SlowTap

论Unity_InputSystem如何使用(一)

  • 在按键按住时间大于等于Max Tap Duriation时,松开按键触发performed

Tap

论Unity_InputSystem如何使用(一)

  • 当按键按下会触发started,若在Max Tap Duriation时间内(小于)松开按钮,触发performed,否则触发canceled。

Processors——处理器,对得到的值进行处理(有点长可以不看)

Clamp
将输入值钳制到[min…max]范围。
Invert
反转控件中的值(即,将值乘以-1)。
Invert Vector 2
反转控件中的值(即,将值乘以-1)。如果invertX为真,则反转矢量的x轴;如果invertY为真,则反转矢量的y轴。
Invert Vector 3
反转控件中的值(即,将值乘以-1)。如果反转x为真,则反转矢量的x轴;如果反转y为真,则反转y轴;如果反转z为真,则反转z轴。
Normalize
如果最小值>=零,则将[min…max]范围内的输入值规格化为无符号规格化形式[0…1],如果最小值<零,则将输入值规格化为有符号规格化形式[-1…1]。
Normalize Vector 2
将输入向量规格化为单位长度(1)。
Normalize Vector 3
将输入向量规格化为单位长度(1)
Scale
将所有输入值乘以系数。
Scale Vector 2
将所有输入值沿x轴乘以x,沿y轴乘以y。
Scale Vector 3
将所有输入值沿x轴乘以x,沿y轴乘以y,沿z轴乘以z。
Axis Deadzone
axis死区处理器缩放控件的值,使绝对值小于最小值的任何值为0,绝对值大于最大值的任何值为1或-1。许多控件没有精确的静止点(也就是说,当控件位于中心时,它们并不总是精确报告0)。在死区处理器上使用最小值可避免此类控件的无意输入。此外,当轴一直移动时,某些控件不一致地报告其最大值。在死区处理器上使用最大值可确保在这种情况下始终获得最大值。
Stick Deadzone
摇杆死区处理器缩放Vector2控件(如摇杆)的值,以便任何幅值小于最小值的输入向量都将得到(0,0),而任何幅值大于最大值的输入向量都将规格化为长度1。许多控件没有精确的静止点(也就是说,当控件位于中心时,它们并不总是精确地报告0,0)。在死区处理器上使用最小值可避免此类控件的无意输入。此外,当轴一直移动时,某些控件不一致地报告其最大值。在死区处理器上使用最大值可确保在这种情况下始终获得最大值。

点击+号

论Unity_InputSystem如何使用(一)

  1. 添加单个按钮绑定
  2. 添加1D轴组合,就是1到-1。
  3. 2D轴
  4. 3D轴
  5. 添加双组合键,如Ctrl+Z
  6. 添加三组合键,如Shift+Win+S;

添加之后双击它们
论Unity_InputSystem如何使用(一)

1D Axis

论Unity_InputSystem如何使用(一)

  • 负和正值

论Unity_InputSystem如何使用(一)

Composite Type

论Unity_InputSystem如何使用(一)

  1. Min Value和Max Value则是正负值的界限。
  2. Which Side Win则是当代表正负的键同时按下时哪一方获胜

论Unity_InputSystem如何使用(一)

2D Vector

论Unity_InputSystem如何使用(一)

  • 上(0,1)下(0,-1)左(-1,0)右(1,0)

论Unity_InputSystem如何使用(一)

  1. Mode 处理模式
  2. Analog——模拟值,浮点值
  3. DIgital Normalized——单位化向量
  4. Digital——向量

3D Vector

  • 与2D相同

One Modifier

论Unity_InputSystem如何使用(一)

  • 如Ctrl+V,Modifier代表Ctrl,Button代表V。
  • Two Modifier

论Unity_InputSystem如何使用(一)文章来源地址https://www.toymoban.com/news/detail-434633.html

  • 如Shift+Win+S,Modifier1代表Ctrl,Modifier2代表Win,S代表Button

三、InputAction的一些使用代码

首先我们需要启用输入检测
然后其拥有三种事件——开始,触发,结束
这些拥有一个参数,通过这个参数我们可以获得相关信息
void Start()
    {
        //启用
        Move.Enable();
        //开始事件调用
        Move.started += (con) =>
        {
            print("start");
        };
        //触发事件调用
        Move.performed += (con) =>
        {
            //当前状态
            //没有启用是 Disabled
            //等待是 Waiting
            //开始是 Started
            //触发是 Performed
            //结束是 Canceled
            print(con.phase);
            //action名字
            print(con.action.name);
            //控件路径
            print(con.control.path);
            //控件信息
            print(con.control.name);
            //返回的值
            print(con.ReadValue<Vector2>());
            //持续时间
            print(con.duration);
            //事件开始时间
            print(con.startTime);
        };
        //结束事件时间
        Move.canceled += Move_canceled;
    }

    private void Move_canceled(InputAction.CallbackContext obj)
    {
        print("canceled");
    }

到了这里,关于论Unity_InputSystem如何使用(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity使用新输入系统InputSystem制作飞机大战Demo(后处理配置、子弹的发射……)

    @作者 : SYFStrive @博客首页 : HomePage 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 📌: 觉得文章不错可以点点关注 👉: 专栏连接🔗 💃: 程序员每天坚持锻炼💪 👉 飞机大战专栏 (🔥) 单例模式是1种设计模式:👉(Design pattern)代表了最佳的实践,通常被有经

    2024年01月22日
    浏览(34)
  • Unity解决:3D开发模式第三人称视角 WASD控制角色移动旋转 使用InputSystem

    Unity版本:2019.2.3f1 目录  安装InputSystem 1:创建InputHander.cs脚本 挂载到Player物体上 获取键盘输入WADS 2.创建PlayerLocomotion.cs挂载到Player物体上,控制物体移动转向   菜单栏/Window/Package Manager/Input System  工程面板内 右键--创建Input Actions  选中New Controls改名为PlayerControls 然后属

    2024年02月06日
    浏览(38)
  • Unity使用新输入系统InputSystem制作飞机大战Demo(对象池设计模式及应用)

    @作者 : SYFStrive @博客首页 : HomePage 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 📌: 觉得文章不错可以点点关注 👉: 专栏连接🔗 💃: 程序员每天坚持锻炼💪 👉 飞机大战专栏 (🔥) 单例模式是1种设计模式:👉(Design pattern)代表了最佳的实践,通常被有经

    2024年01月23日
    浏览(39)
  • 【Unity InputSystem】实用教程-实现角色移动跳跃功能(Input System在PC端鼠键!手机端触摸屏!主机手柄!三端使用教程)

    在上一篇文章当中我们手把手的跟大家分享了InputSystem的基础操作(如何使用5种不同的方式获取到InputSystem种的输入检查信息)。那么接下来我们继续分享一下在我们获取到InputSystem输入信息后,如何使用检测到的信息实现我们对应的输入功能。 本次我们使用的Unity编辑器版本为

    2024年02月11日
    浏览(41)
  • Unity全新的输入系统InputSystem

    在Unity中,默认使用的是旧的输入管理器(InputSystemOld) 在脚本中,利用Input类可以获得用户的输入操作,以及访问移动设备的多点触控或加速感应数据,Input类可以读取输入管理器中设置的按键,在Updata函数中监测用户的输入。 1.虚拟轴 在项目设置中可以看到虚拟轴的相关设

    2024年02月05日
    浏览(42)
  • Unity之新版输入系统InputSystem入门

    最近Unity版本全面升级到Unity2021了,着色器也全面使用URP,接下来毫无疑问,输入系统也要全面升级InputSystem,这也是Unity官方希望我们做的,毕竟现在都2023年了,我们的技术是需要跟上时代的步伐。 老版本的InputSysten系统,其实就一个Input静态类,官方给我们预定了一些常用

    2024年02月16日
    浏览(31)
  • 【Unity InputSystem】基础教程(保姆级超详细超基础!!!)

    随着Unity的不断发展,开发者们对Unity的项目输入系统要求也越来越高,经常会有项目在做多平台适配和跨平台移植时对变更输入系统而感到烦恼。而InputSystem这款插件正是Unity官方为了解决广大开发者而推出的一款新的输入方式。 相较于旧版的InputManager,InputSystem的操作虽然

    2024年02月11日
    浏览(29)
  • Unity简单操作:InputSystem获取WASD键盘输入 移动人物

      目录 安装InputSystem  在编辑的脚本中使用 InputSystem生成的脚本 Unity版本:2019.2.3f1 菜单栏/Window/Package Manager/Input System  工程面板内 右键--创建Input Actions   选中New Controls改名为PlayerControls 然后属性 面板按下Edit asset  Action Maps添加:PlayerMovement   Actions添加:New action 改名为

    2024年02月16日
    浏览(27)
  • Unity InputSystem 实现同一按键单击、双击、长按执行不同逻辑

    最近学习了一下Unity InputSystem。该系统可用于实现、管理复杂的操作逻辑,上限很高。但由于它有一定的学习成本,导致一些和我一样的小白一入门时不得要领。之前卡住我的一个需求就是通过InputSystem 实现同一按键单击、双击、长按执行不同逻辑。例如点击单位执行攻击、

    2024年02月05日
    浏览(38)
  • 【Unity】【FBX】如何将FBX模型导入Unity

    网上能够找到不少不错的FBX模型资源,大大加速游戏开发时间。如何将这些FBX导入Unity呢? 打开Unity项目文件,进入场景。 点击Projects面板,右键选择Import New Assets 选中FBX文件后导入。Assets文件夹中就会出现相应资源。 这个时候导入的FBX只是模型,没有任何材质。继续导入

    2024年02月03日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包