Unity InputSystem学习笔记(一)获取设备按键信息

2023-11-12

键盘

每帧判断

void Update()
{
     if (Keyboard.current.spaceKey.wasPressedThisFrame)
     {
         print("空格键");
     }
     if(Keyboard.current.dKey.wasReleasedThisFrame)
     {
         print("d键抬起");
     }
     if(Keyboard.current.spaceKey.isPressed)
     {
         print("空格按下");
     }
     if(Keyboard.current.anyKey.wasPressedThisFrame)
     {
         print("任意键按下");
     }
}


绑定事件的方式

keyboard.onTextInput += (c) =>
{
    print("通过Lambda表达式" + c);
};
keyboard.onTextInput += TestInput;
private void TestInput(char c)
{
    print("通过函数监听" + c);
}

鼠标

每帧判断

void Update
{
	if(Mouse.current.rightButton.wasPressedThisFrame)
    {
        print("鼠标右键按下");
    }
    if(Mouse.current.middleButton.wasPressedThisFrame)
    {
        print("鼠标中建按下");
    }
    if(Mouse.current.forwardButton.wasPressedThisFrame)
    {
        print("鼠标前键按下");
    }
    if(Mouse.current.backButton.wasPressedThisFrame)
    {
        print("鼠标后键按下");
    }
    //屏幕坐标(左下角为(0,0)
    print(Mouse.current.position.ReadValue());
    //两帧之间的偏移
    print(Mouse.current.delta.ReadValue());
    //滚轮
    print(Mouse.current.scroll.ReadValue());
}

触摸屏

每帧判断


void Update
{
	Touchscreen ts = Touchscreen.current;
	if (ts == null)
	{
	 	return;
	}
	else
	{
		 TouchControl tc = ts.touches[0];
		 if(tc.press.wasPressedThisFrame)
		 {
		     print("按下");
		 }
		 if(tc.press.wasReleasedThisFrame)
		 {
		     print("抬起");
		 }
		 if(tc.press.isPressed)
		 {
		     print("按住");
		 }
		 if(tc.tap.isPressed)
		 {
		
		 }
		 //点击次数 
		 print(tc.tapCount);
		 //点击位置
		 print(tc.position.ReadValue());
		 //第一次接触位置
		 print(tc.startPosition.ReadValue());
		 //得到的范围
		 print(tc.radius.ReadValue());
		 //偏移位置
		 print(tc.delta.ReadValue());
		 //返回TouchPhase: None,Began,Moved,Ended,Canceled,Stationary
		 print(tc.phase.ReadValue());
	
	 //判断状态
		 UnityEngine.InputSystem.TouchPhase tp = tc.phase.ReadValue();
		 switch (tp)
		 {
		     //无
		     case UnityEngine.InputSystem.TouchPhase.None:
		         break;
		         //开始接触
		     case UnityEngine.InputSystem.TouchPhase.Began:
		         break;
		         //移动
		     case UnityEngine.InputSystem.TouchPhase.Moved:
		         break;
		         //结束
		     case UnityEngine.InputSystem.TouchPhase.Ended:
		         break;
		         //取消
		     case UnityEngine.InputSystem.TouchPhase.Canceled:
		         break;
		         //静止
		     case UnityEngine.InputSystem.TouchPhase.Stationary:
		         break;
		 }
}

手柄

Gamepad gamepad = Gamepad.current;
    if(gamepad==null)
    {
        return;
    }
    Vector2 leftDir= gamepad.leftStick.ReadValue();
    Vector2 rightDir= gamepad.rightStick.ReadValue();
    //左摇杆按下抬起
    if(Gamepad.current.leftStickButton.wasPressedThisFrame)
    {

    }
    if (Gamepad.current.leftStickButton.wasReleasedThisFrame)
    {

    }
    if (Gamepad.current.leftStickButton.isPressed)
    {

    }
    //右摇杆按下抬起
    if (Gamepad.current.rightStickButton.wasPressedThisFrame)
    {

    }
    if (Gamepad.current.rightStickButton.wasReleasedThisFrame)
    {

    }
    if (Gamepad.current.rightStickButton.isPressed)
    {

    }

    if(Gamepad.current.dpad.left.wasPressedThisFrame)
    {

    }
    if (Gamepad.current.dpad.left.wasReleasedThisFrame)
    {

    }
    if (Gamepad.current.dpad.left.isPressed)
    {

    }
    //右侧三角方块/XYAB按键
    //Gamepad.current.buttonEast;
    //Gamepad.current.buttonWest;
    //Gamepad.current.buttonSouth;
    //Gamepad.current.buttonEast;
    if (Gamepad.current.buttonNorth.wasPressedThisFrame)
    {

    }
    if (Gamepad.current.buttonNorth.wasReleasedThisFrame)
    {

    }
    if (Gamepad.current.buttonNorth.isPressed)
    {

    }
    //手柄中央键
    if(Gamepad.current.startButton.wasPressedThisFrame)
    {

    }
    if(Gamepad.current.selectButton.wasPressedThisFrame)
    {

    }
    //肩键
    if(Gamepad.current.leftShoulder.wasPressedThisFrame)
    {

    }
    if (Gamepad.current.rightShoulder.wasPressedThisFrame)
    {

    }
    if(Gamepad.current.leftTrigger.wasPressedThisFrame)
    {

    }
    if(Gamepad.current.rightTrigger.wasPressedThisFrame)
    {

    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity InputSystem学习笔记(一)获取设备按键信息 的相关文章

  • Jenkins管理Docker容器

    一 Docker镜像容器手动更新流程 1 Docker安装 curl o etc yum repos d epel repo http mirrors aliyun com repo epel 7 repo curl o etc yum r

随机推荐

  • ajax的添加,在ajax中添加更多参数

    我正在使用AJAX功能 我使用AJAX将3个变量传递到下一页 当我添加第4个变量时 函数不会被调用 Code Browser Support Code function ajaxFunction var ajaxRequest The va
  • 超大规模数据库集群保稳系列之一:高可用系统

    基于过去多年在大规模数据集群保稳方面的实践经验 我们希望能够跟业界进行一些技术交流 美团技术团队举办了第75期技术沙龙 我们邀请到了美团研究员赵应钢担任出品人 同时请邀请到张洪 王占全 蔺瑞超 沈裕锋等4位数据库方向的4位技术专家 围绕进攻
  • C++虚拟机制的压制

    C 中 如果一个类有虚拟函数的时候 当使用该类的指针调用其虚函数的时候 代码会被编译器转换为使用虚函数表中保存的函数地址找到函数后二次调用 即 class A public virtual void Out this gt Inner vi
  • ue4绘制线的三种方式

    第一种方式 是用样条线 简明扼要 但是打包后就消失了 AActor actor world gt SpawnActor lt AActor gt ActorClass actor gt AttachToActor this FAttachm
  • 步进及伺服调试中常见问题

    步进及伺服调试中常见问题 步进 伺服 步进 1 步进电机驱动器可以接收两种脉冲信号 一种单脉冲方式 一种是双脉冲方式 可通过驱动器拨码开关设置进行选择 试分别画出两种方式的信号图 单脉冲方式脉冲信号从脉冲端 PUL 输入 通过方向端 DIR
  • java实现域名解析

    java实现域名解析 域名解析过程 浏览器检查是否有该域名缓存 检查本机host文件之内是否有该域名对应ip 检查本机DNS缓存 递归或迭代向DNS根域名服务器获取该域名ip地址 1 windows控制台 win r 输入cmd进入控制台
  • C语言常见校验(加密)操作——异或

    在通讯传输数据过程中 往往要加校验码 今天写了个简单的异或以及解异或的操作代码 include
  • arcsde安装步骤_ArcGIS 9.3 安装之 SDE的安装及使用

    由于ArcSDE9 3只支持Oracle 11gR1 32位版本 所以要在安装ArcSDE的电脑上安装一个32位版本的Oracle 11gR1客户端 1 安装SDE程序 并进行注册 1 选择注册机KeyGen exe 点击server标签
  • Vue3中父子组件实现数据双向绑定效果

    父组件
  • MarkDown/README.md文件添加图片

    README md文件添加图片 用MarkDown格式的文档编辑时 需要上传图片 比如往gitHub上的README md中添加一张展示效果图 alt text path to img jpg Title 其中 path to img jp
  • 树莓派设置静态IP记录(整理)

    另外 树莓派直连电脑 设置静态ip 可参考 http blog csdn net liang890319 article details 8639128 树莓派默认使用的是dhcp自动分配ip 而且默认打开SSH服务 当没有显示器的时候 我
  • 面试官:Spring refresh过程是怎样的?

    小熊学Java网站 https javaxiaobear gitee io 每周持续更新干货 建议收藏 1 Spring refresh 流程 refresh 是 AbstractApplicationContext 中的核心方法 负责初始
  • 多模态学习-基于文本和图像信息的商品分类框架

    将文本model和图像model合并为一个model 因为它们包含了互补的信息 对于图像和文本数据 都是用CNN 对图像数据 使用已经在Image Net上训练过的网络 该网络已经具有为自然图像提取丰富特征的能力 利用预先训练的机器学习模型
  • uni-app自定义tabbar

    uni app自定义tabbar 为什么要自定义tabbar呢 虽然说直接在page json里面直接配置性能可能更好点 但是有时候满足不了我们的需求 比如说 需要鉴权的时候 我们就需要通过不同的用户显示不同的底部 首先page json里
  • libevent(7)libevent中的事件event

    一 事件状态 libevent有4种事件状态 分别是 initialized pending active persistent 这4种状态的转换关系如下 1 已初始化 initialized 对应图中的non pending状态 表示事件
  • 【Java异常】Error:java: Compilation failed: internal java compiler error 的解决方案

    一 错误描述 刚刚通过IDEA导入一个新的项目之后 运行报错 如下所示 Error java Compilation failed internal java compiler error 二 错误原因 出现这个错误的原因主要是因为 JDK
  • python 计算cpu占用率

    首先pip install psutil 或者 easy install psutil import psutil import os datetime time def getMemCpu data psutil virtual memo
  • Server 层及整个MySQL体系图

    Server 层及整个MySQL体系图 InnoDB 存储引擎层体系结构图 学习mysql innodb体系结构 这个图不错 再结合innodb存储引擎 效果更佳
  • Visual Studio容器工具要求在构建,调试或运行容器化项目之前运行Docker

    出现此提示 是因为电脑未安装Docker所致 接下来就教大家如何安装Docker 第一步 下载 地址 Install Docker Desktop on Windows Docker Documentation 第二步 安装 1 双击Doc
  • Unity InputSystem学习笔记(一)获取设备按键信息

    键盘 每帧判断 void Update if Keyboard current spaceKey wasPressedThisFrame print 空格键 if Keyboard current dKey wasReleasedThisF