【Unity InputSystem】实用指南:在PC端(鼠标与键盘)、手机端(触摸屏)、主机手柄上同步实现角色移动与跳跃功能

前引

随着Unity的不断发展,开发者对于项目的输入系统要求也日益提高。在进行多平台适配和跨平台移植时,常常需要改变输入系统,这给开发者带来了不少困扰。而Unity官方推出的InputSystem插件,则是为了解决这一问题而推出的全新输入方式。
相较于旧版的InputManager,InputSystem的操作虽然更为繁琐复杂,但在应对跨平台项目时,面对不同的输入方式,InputSystem的输入映射机制为开发者提供了巨大的便利。因此,学习InputSystem成为必要之举。


正文

PC端-键鼠🐀

创建PC对应的键鼠InputActions

在安装好InputSystem之后我们先在项目中创建InputActions,如下所示:


创建InputActions成功后双击打开InputActions编辑页面,创建一个ActionMaps命名为PC,之后再创建Map中对应的几个Actions分别命名为Move,CameraControl,Jump:


Move,CameraControl的Action Type选择Value, Control Type为返回值类型选择Vector2:


在MoveAction的输入绑定中我们需要进行以下操作 选择方向键混合绑定:


之后在每个方向检测上绑定对应的输入检测方式,每次变更完InputAction后记得点击Save Asset保存(或者勾选右侧的Auto Save自动保存):

创建好的InputActions后,我们可以在InputActions属性面板中找到Generate C# Class并勾选,随后点击Apply生成对应的脚本,之后我们就可以在我们自己写的PlayerController 类中调用该脚本了:

万事俱备,只欠代码!


PC脚本调用初始化

初始化:

using UnityEngine;
using UnityEngine.InputSystem;

public class RPGController : MonoBehaviour
{
    public RPGInputActions rpgInputActions;
    private void Awake() {
        //实例化我们刚刚生成的rpgInputActions脚本
        rpgInputActions = new RPGInputActions();
    }
    void OnEnable()
    {
        //使用前需要将该rpgInputActions开启
        rpgInputActions.PC.Enable();
    }
    void OnDisable()
    {
        //使用完需要将该rpgInputActions关闭
        rpgInputActions.PC.Disable();
    }
    //Update生命周期函数
    private void Update() {
    }
}

PC获取Move Action输入:

    //将获取Move输入方法写在Update方法中逐帧调用
    private void Update() {
        getMoveInput();
    }
    //获取Move输入方法
    private void getMoveInput(){
        //将读取到的Move返回值赋值给moveVector2 
        Vector2 moveVector2 = rpgInputActions.PC.Move.ReadValue<Vector2>();
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YF云飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值