Unity游戏输入系统(新版+旧版)

news2024/9/22 21:15:04

使用新版还是旧版

在这里插入图片描述
在这里插入图片描述

旧版

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))  // 写法1
        if (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("松开跳跃");
        }
    }


}

按键后可观察到,两个轴的数值发生变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1484125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python爬虫之selenium知识点记录

selenium 一、前期准备 1、概述 selenium本身是一个自动化测试工具。它可以让python代码调用浏览器。并获取到浏览器中加载的各种资源。 我们可以利用selenium提供的各项功能。 帮助我们完成数据的抓取。 2、学习目标 掌握 selenium发送请求&#xff0c;加载网页的方法 掌…

新一代电话机器人开源PHP源代码

使用easyswoole 框架开发的 新一代电话机器人开源PHP源码 项目地址&#xff1a;https://gitee.com/ddrjcode/robotphp 代理商页面演示地址 http://119.23.229.15:8080 用户名&#xff1a;c0508 密码&#xff1a;123456 包含 AI外呼管理&#xff0c;话术管理&#xff0c;CR…

简易内存池2 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 请实现一个简易内存池,根据请求命令完成内存分配和释放。 内存池支持两种操作命令&#xff0c;REQUEST和RELEASE&#xff0c;其格式为: REQUEST请求的内存大小 …

golang学习5,glang的web的restful接口

1. //返回json r.GET("/getJson", controller.GetUserInfo) package mainimport (/*"net/http"*/"gin/src/main/controller""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/get", func(ctx *…

【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug

文章目录 前言 State断点 Transition断点 条件断点 按State步进 Watch Data Value Sequence Viewer 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑…

数据结构开篇

目录 一. 如何学好数据结构二. 基本概念和术语2.1 区分数据、数据元素、数据项、数据对象2.2 数据结构2.2.1 逻辑结构2.2.2 存储结构 2.3 数据类型和抽象数据类型2.4 抽象数据类型的实现 \quad 一. 如何学好数据结构 勤于思考;多做练习;多上机;善于寻求帮助;不怕困难&#xff…

NLP算法实战项目:使用 BERT 进行文本多分类

大多数研究人员将他们的研究论文提交给学术会议&#xff0c;因为这是更快地使研究结果可用的途径。寻找和选择合适的会议一直是一项具有挑战性的任务&#xff0c;特别是对于年轻的研究人员来说。基于先前会议论文集的数据&#xff0c;研究人员可以增加其论文被接受和发表的机会…

基于协同过滤算法的图书推荐系统

目录 一、功能介绍 二、开发环境 三、安装部署说明 一、功能介绍 本系统是一个采用协同过滤算法的图书推荐系统。 数据集&#xff1a;数据集来自亚马逊开源的Book-Crossings数据集。Book-Crossings数据集包含 278,858 个用户的 271,379 本书的 1,149,780 个评分。评分范围从1…

FL Studio选购指南:新手小白应该选择哪个版本FL Studio?

很多打算入手正版FL Studio的新手朋友都会纠结一个问题&#xff1a;哪个版本的FL Studio更适合我&#xff0c;到底应该入手哪一款FL Studio&#xff1f;本文会介绍每个版本之间的差异点&#xff0c;并带大家选择适合自己的FL Sudio版本。 FL Studio全版本 在选购前有一些小知识…

25高数考研张宇 -- 公式总结(更新中)

1. 两个重要极限 (1) lim ⁡ x → 0 sin ⁡ x x 1 \lim _{x \rightarrow 0} \frac{\sin x}{x}1 limx→0​xsinx​1, 推广形式 lim ⁡ f ( x ) → 0 sin ⁡ f ( x ) f ( x ) 1 \lim _{f(x) \rightarrow 0} \frac{\sin f(x)}{f(x)}1 limf(x)→0​f(x)sinf(x)​1. (2) lim ⁡…

小项目:2024/3/2

一、TCP机械臂测试 代码&#xff1a; #include <myhead.h> #define SER_IP "192.168.125.254" //服务器端IP #define SER_PORT 8888 //服务器端端口号#define CLI_IP "192.168.199.131" //客户端IP #define CLI_P…

Linux线程【互斥与同步】

目录 1.资源共享问题 1.1多线程并发访问 1.2临界区和临界资源 1.3互斥锁 2.多线程抢票 2.1并发抢票 2.2 引发问题 3.线程互斥 3.1互斥锁相关操作 3.1.1互斥锁创建与销毁 3.1.2、加锁操作 3.1.3 解锁操作 3.2.解决抢票问题 3.2.1互斥锁细节 3.3互斥…

[NSSCTF 2nd] web复现

1.php签到 <?phpfunction waf($filename){$black_list array("ph", "htaccess", "ini");$ext pathinfo($filename, PATHINFO_EXTENSION);foreach ($black_list as $value) {if (stristr($ext, $value)){return false;}}return true; }if(i…

【Spring IoC】实验四:特殊值处理

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

【NDK系列】Android tombstone文件分析

文件位置 data/tombstone/tombstone_xx.txt 获取tombstone文件命令&#xff1a; adb shell cp /data/tombstones ./tombstones 触发时机 NDK程序在发生崩溃时&#xff0c;它会在路径/data/tombstones/下产生导致程序crash的文件tombstone_xx&#xff0c;记录了死亡了进程的…

electron nsis 安装包 window下任务栏无法正常固定与取消固定 Pin to taskbar

问题 win10系统下&#xff0c;程序任务栏在固定后取消固定&#xff0c;展示的程序内容异常。 排查 1.通过论坛查询&#xff0c;应该是与app的api setAppUserModelId 相关 https://github.com/electron/electron/issues/3303 2.electron-builder脚本 electron-builder…

ABAP - SALV教程04 添加状态栏

CL_SALV_TABLE中提供了 GET_FUNCTIONS方法.GET_FUNCTIONS方法返回的是一个CL_SALV_FUNCTIONS_LIST类型的实例对象. 类CL_SALV_FUNCTIONS_LIST两个方法(SET_ALL、SET_DEFAULT)可以添加标准状态栏 实现步骤: 定义SET_STATUS私有方法. PRIVATE SECTION.METHODS:set_status CHA…

qt 基于百度API的人脸识别

百度云官网&#xff1a;点击跳转 一、创建应用 跳转进去&#xff0c;可以看到以下界面&#xff1a; 点击红色圈内的“去创建”&#xff0c;创建自己的项目。可以看到以下界面&#xff1a; 输入“应用名称”&#xff0c;并勾选“人脸对比”&#xff0c;还要到页面的最后输入“应…

董兆祥出席工业废水资源化,开创变废为宝新途径演讲

演讲嘉宾&#xff1a;董兆祥 董事长 河北奥博水处理有限公司 演讲题目&#xff1a;工业废水资源化&#xff0c;开创变废为宝新途径 会议简介 “十四五”规划中提出&#xff0c;提高工业、能源领城智能化与信息化融合&#xff0c;明确“低碳经济”新的战略目标&#xff0c;热…

C++之stack

1、stack简介 stack是实现的一个先进后出&#xff0c;后进先出的容器。它只有一个出口&#xff0c;只能操作最顶端元素。 2、stack库函数 &#xff08;1&#xff09;push() //向栈压入一个元素 &#xff08;2&#xff09;pop() //移除栈顶元素 &#xff08;3…