猿创征文| Unity进阶InputSystem
Posted SYFStrive
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猿创征文| Unity进阶InputSystem相关的知识,希望对你有一定的参考价值。
@作者 : SYFStrive
@博客首页 : HomePage
📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗
📌:觉得文章不错可以点点关注 👉:Unity插件干货🔗
🔗:阅读文章
目录
提示:以下是本篇文章正文内容
InputSystem
- 简单概述
- Unity2019.4以上版本 + .NET 4 runtime
- 新输入系统InputSystem是2019年Unity新推出的插件, 新输入系统基于事件,输入设备和动作逻辑互相分离,通过配置映射来处理输入信息,只需要配置就行。
- 新的输入系统(Input System),可以用作 UnityEngine.Input 中针对 Unity 典型输入系统的更具扩展性和可自定义的替代方案。
- 输入系统(Input System)包实现了一个系统,可以使用任何类型的输入设备来控制您的 Unity 内容。它旨在成为 Unity 经典输入管理器(UnityEngine.Input类)的更强大、更灵活和可配置的替代品。
输入系统前期准备
两步走: 配置系统 👉 下载(InputSystem)
配置系统
下载(InputSystem)
简单使用
- 创建InputActions
创建如 👇
- 选择对应的输入设备及设置想要的效果如 :移动、跳跃、蹲下……
- 自动添加对应的InputActions脚本
- 随便创建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("松开键!");
- 添加 PlayerInput组件
- 给PlayerInput组件添加Acions
8. 设置操作响应
8.1 一旦组件有了它的动作,你必须为每个动作设置一个响应。允许您使用Inspector 窗口中的BehaviorPlayerInput属性以多种方式设置响应:
8.2 上面的屏幕截图使用了Invoke Unity Events,它的使用UnityEvent方式与 Unity UI 的使用方式相同。Unity为链接到组件的每个动作显示一个事件。这允许您直接连接每个事件的目标方法。
使用相关脚本调用脚本方法
- 简单实现物体的跳跃(如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("松开键!");
效果如 👇
- 实现物体的跳跃
代码如 👇
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的主要内容,如果未能解决你的问题,请参考以下文章
猿创征文|前端进阶必备——WebSockt实现聊天室(附源码)