猿创征文| Unity进阶InputSystem

Posted SYFStrive

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猿创征文| Unity进阶InputSystem相关的知识,希望对你有一定的参考价值。

@作者 : SYFStrive

@博客首页 : HomePage

📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗

📌:觉得文章不错可以点点关注 👉:Unity插件干货🔗

🔗:阅读文章

目录

提示:以下是本篇文章正文内容

InputSystem

  • 简单概述
  1. Unity2019.4以上版本 + .NET 4 runtime
  2. 新输入系统InputSystem2019年Unity新推出的插件, 新输入系统基于事件,输入设备和动作逻辑互相分离,通过配置映射来处理输入信息,只需要配置就行。
  3. 新的输入系统(Input System),可以用作 UnityEngine.Input 中针对 Unity 典型输入系统的更具扩展性和可自定义的替代方案。
  4. 输入系统(Input System)包实现了一个系统,可以使用任何类型的输入设备来控制您的 Unity 内容。它旨在成为 Unity 经典输入管理器(UnityEngine.Input类)的更强大、更灵活和可配置的替代品。

输入系统前期准备

两步走: 配置系统 👉 下载(InputSystem)

配置系统

下载(InputSystem)

简单使用

  1. 创建InputActions

创建如 👇

  1. 选择对应的输入设备及设置想要的效果如 :移动、跳跃、蹲下……

  1. 自动添加对应的InputActions脚本

  1. 随便创建1个物体

  1. 给物体创建1个脚本
using UnityEngine;
using UnityEngine.InputSystem; //引入命名空间

public class PlayerEvent : MonoBehaviour

  public Rigidbody rig;
  private float jumpForce = 10;

  public void __PlayerMove(InputAction.CallbackContext callback)
  
    //相等于input.GetKey判断
    if (callback.phase == InputActionPhase.Started)
    
      Debug.Log("按下键!");
    
    if (callback.phase==InputActionPhase.Performed)
    
      Debug.Log("持续按下键!");
      rig.velocity += Vector3.up*jumpForce;
    
    if (callback.phase == InputActionPhase.Canceled)
    
      Debug.Log("松开键!");
    
  

  1. 添加 PlayerInput组件

  1. 给PlayerInput组件添加Acions


8. 设置操作响应

8.1 一旦组件有了它的动作,你必须为每个动作设置一个响应。允许您使用Inspector 窗口中的BehaviorPlayerInput属性以多种方式设置响应:

8.2 上面的屏幕截图使用了Invoke Unity Events,它的使用UnityEvent方式与 Unity UI 的使用方式相同。Unity为链接到组件的每个动作显示一个事件。这允许您直接连接每个事件的目标方法。

使用相关脚本调用脚本方法

  1. 简单实现物体的跳跃(如InputActions设置的是键盘输入Space跳跃)

代码如 👇

public void __PlayerMove(InputAction.CallbackContext callback)

  //相等于input.GetKey判断
  if (callback.phase == InputActionPhase.Started) //Started 开始按下执行
  
    Debug.Log("按下键!");
  
  if (callback.phase==InputActionPhase.Performed) //Performed 按下执行
  
    Debug.Log("持续按下键!");
  
  if (callback.phase == InputActionPhase.Canceled) //Canceled 松开执行
  
    Debug.Log("松开键!");
  

效果如 👇

  1. 实现物体的跳跃

代码如 👇

using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerEvent : MonoBehaviour

  public Rigidbody rig;
  private float jumpForce = 10;

  public void __PlayerMove(InputAction.CallbackContext callback)
  
    //相等于input.GetKey判断
    if (callback.phase == InputActionPhase.Started)
    
      Debug.Log("按下键!");
    
    if (callback.phase==InputActionPhase.Performed)
    
      Debug.Log("持续按下键!");
      rig.velocity += Vector3.up*jumpForce;
    
    if (callback.phase == InputActionPhase.Canceled)
    
      Debug.Log("松开键!");
    
  

效果如 👇

最后


本文到这里就结束了,大佬们的支持是我持续更新的最大动力,希望这篇文章能帮到大家💪

 

                 相关专栏连接🔗

下篇文章再见ヾ( ̄▽ ̄)ByeBye

以上是关于猿创征文| Unity进阶InputSystem的主要内容,如果未能解决你的问题,请参考以下文章

猿创征文 | Java进阶详解抽象类及常用接口

猿创征文| Unity~DOTween相关使用

猿创征文| Unity简单实现跑马灯抽奖

猿创征文|前端进阶必备——WebSockt实现聊天室(附源码)

猿创征文|前端进阶必备——WebSockt实现聊天室(附源码)

猿创征文|前端进阶必备——WebSockt实现聊天室(附源码)