前引
随着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>();