使用新版还是旧版
旧版
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class c5 : MonoBehaviour
{void Start(){}void Update(){// 注意要在游戏中 点鼠标键盘进行测试// 鼠标// 0左键 1右键 2滚轮if (Input.GetMouseButtonDown(0)){Debug.Log("按下");}// 持续按下鼠标按键if (Input.GetMouseButton(0)){Debug.Log("持续鼠标");}// 松开鼠标if (Input.GetMouseButtonUp(0)){Debug.Log("松开鼠标");}// 键盘// 按下if (Input.GetKeyDown(KeyCode.A)){Debug.Log("按下A键");}// 持续// if (Input.GetKey(KeyCode.A)) // 写法1if (Input.GetKey("a")) //写法2{Debug.Log("持续A键");}// 松开if (Input.GetKeyUp(KeyCode.A)){Debug.Log("松开A键");}}
}
新版
1、安装
安装新版后,在 [编辑-> 项目设置-> 玩家-> 其他设置-> 输入活动 ]处理中设置,新版或者两个。
2、设置
安装后,首先要挂新版的组件 “Playre Input”,使用搜索,输入Input。
3、新建 Input Aactions
4、设置键位
双击新建的文件,出现下面的菜单。
若想使用键盘:keyboard --> By Location of Key(Using US Layout) --> 选择按键。
若想使用鼠标:Mouse --> left Button(左键)
5、使用设置好的文件
还需要使用脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 导入新版 游戏操作系统
using UnityEngine.InputSystem;public class c6 : MonoBehaviour
{// 声明PlayerInput input;void Start(){// 获取 新游戏操作系统的组件input = GetComponent<PlayerInput>();// 如需切换 另一套动作// input.SwitchCurrentActionMap("动作名字");// 开启该动作input.currentActionMap.Enable();// 获取 按下动作事件 (跳跃)input.actions["Jump"].performed += Jump;// 获取 松开动作事件 (跳跃)input.actions["Jump"].canceled += Jump;// 获取 按下动作事件 (攻击)input.actions["Attack"].performed += Attack;}/*private void Update(){// 获取Move的Vector2向量 (我设置了一个手柄的按键)Vector2 v = input.actions["Move"].ReadValue<Vector2>();Debug.Log("水平轴:" + v.x + ", 垂直轴:" + v.y);}*/// 攻击函数private void Attack(InputAction.CallbackContext obj){Debug.Log("按下攻击");}// 跳跃函数private void Jump(InputAction.CallbackContext obj){if (obj.performed == true){Debug.Log("按下跳跃");}if (obj.canceled == true){Debug.Log("松开跳跃");}}}
以上完成了,跳跃和攻击的绑定。
效果如下:
设定上下左右
将4个绑定按键
asd就不截图了,都一样。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 导入新版 游戏操作系统
using UnityEngine.InputSystem;public class c6 : MonoBehaviour
{// 声明PlayerInput input;void Start(){// 获取 新游戏操作系统的组件input = GetComponent<PlayerInput>();// 如需切换 另一套动作// input.SwitchCurrentActionMap("动作名字");// 开启该动作input.currentActionMap.Enable();// 获取 按下动作事件 (跳跃)input.actions["Jump"].performed += Jump;// 获取 松开动作事件 (跳跃)input.actions["Jump"].canceled += Jump;// 获取 按下动作事件 (攻击)input.actions["Attack"].performed += Attack;}private void Update(){// 获取Move的Vector2向量 (我设置了一个手柄的按键)Vector2 v = input.actions["Move"].ReadValue<Vector2>();Debug.Log("水平轴:" + v.x + ", 垂直轴:" + v.y);}// 攻击函数private void Attack(InputAction.CallbackContext obj){Debug.Log("按下攻击");}// 跳跃函数private void Jump(InputAction.CallbackContext obj){if (obj.performed == true){Debug.Log("按下跳跃");}if (obj.canceled == true){Debug.Log("松开跳跃");}}}
按键后可观察到,两个轴的数值发生变化。