Input

2023-11-19

Unity3d的所有输入,包括键盘鼠标和智能手机触摸等都是通过这一个类来完成 –Input类。 
见API:http://docs.unity3d.com/ScriptReference/Input.html

输入Input类使用:建议在Updata()方法内使用。官方文档如是说: 
–Note also that the Input flags are not reset until “Update()”, so its suggested you make all the Input Calls in the Update Loop.

鼠标输入

获得相应的鼠标位置:Input的静态变量 
点击鼠标:鼠标左键为0,右键为1,滚轮为2.

Input.mousePosition
Input.GetMouseButton(0)//按下状态瞬间为true
Input.GetMouseButtonDown(0)//按下瞬间为true
Input.GetMouseButtonUp(1)//弹起瞬间为true
  • 1
  • 2
  • 3
  • 4

触摸输入

主要有以下变量与方法

Input.multiTouchEnabled
Input.simulateMouseWithTouches
Input.touchCount
Input.touches
Input.touchSupported
Input.GetTouch()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输入管理

输入管理–InputManager 
通过菜单Edit–>Project Settings–>Input可打开InputManager。 
InputManager InputManager的Axes项 
在代码里可以如下使用InputManager

var input = Input.GetButton ("Horizontal");//按下为true,否则为false,建议使用GetButton()代替GetKey()
var input = Input.GetAxis ("Horizontal");//取得-1到1的值,无输入则为0
  • 1
  • 2

键盘输入

主要有以下方法

Input.GetAxis() //返回float值而不是布尔值,从-1到1之间
Input.GetAxisRaw()//返回非区间,而是端点值(-1,0,1)或者摇杆的位置
Input.GetButton() //按下状态瞬间为true
Input.GetButtonDown()//按下瞬间为true
Input.GetButtonUp()//弹起瞬间为true
Input.GetKey()//点击返回true,其他情况返回false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

getKey()方法

在方法内输入Key值即可

    void Update() {
        if (Input.GetKey("up"))//直接输入Key值
            print("up arrow key is held down");
        if (Input.GetKey(KeyCode.UpArrow))//通过KeyCode类输入Key值
            print("KeyCode.UpArrow key is held down");
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其中有效的Key值如下: 
普通键“a”, “b”, “c” … 
数字键“1”, “2”, “3”, … 
方向键“up”, “down”, “left”, “right” 
小键盘“[1]”, “[2]”, “[3]”, “[+]”, “[equals]” 
特殊键“backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down” 
复键“right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd” 
鼠标“mouse 0”, “mouse 1”, “mouse 2”, … 
摇杆“joystick button 0”, “joystick button 1”, “joystick button 2”, … 
摇杆“joystick 1 button 0”, “joystick 1 button 1”, “joystick 2 button 0”, … 
方法键“f1”, “f2”, “f3”, … 
见API:http://docs.unity3d.com/Manual/ConventionalGameInput.html

getButton()方法

该方法不是直接与Key值对应,而是与输入管理类的Axes项对应。 
建议使用GetButton()代替GetKey(),项目后期更方便修改。

    void Update() {
        if (Input.GetButton("Fire1") && Time.time > nextFire) {
            nextFire = Time.time + fireRate;
            GameObject clone = Instantiate(projectile, transform.position, transform.rotation) as GameObject;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

GetAxis()方法

返回float值而不是布尔值,从-1到1之间 
输入管理类InputManager专门为Axis设置了参数 
InputManager的Axes项 
Dead: 表示最小作用区域,当触摸或者摇杆小于这个值则认为没有输入 
Gravity:表示松开按键时,从端点(1或者-1)返回缺省值(0)的速度 
Sensitivity:表示按下按键时,从缺省值(0)行驶到端点(1或者-1)的速度 
Snap: 闪电反向的作用 
不勾选:-1逐渐变到0再逐渐变到1; 
勾选上:-1立刻变为0再逐渐变到1。

MonoBehavior的鼠标事件

类似Start()和Update()方法一样,以下鼠标方法在MonoBehavior子类可以直接使用. (这是在monobehavior 中实现的方法)

以下方法要求组件的Collider必须打开,否则都将检测不到鼠标。

void OnMouseEnter(){}//鼠标进入区域
void OnMouseOver(){}//鼠标停留在区域内
void OnMouseExit(){}//鼠标离开区域
void OnMouseDown(){}//鼠标按下
void OnMouseUp(){}  //鼠标松开
void OnMouseDrag(){}//鼠标拖拽
void OnMouseUpAsButton(){}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
 https://blog.csdn.net/dqzggdmzdbwyj/article/details/49907363
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Input 的相关文章

  • unity粒子特效附上贴图后播放动画

    转自 http jingyan baidu com article f96699bbb1a0d6894f3c1b77 html 参考 http www unitymanual com thread 2993 1 1 html dsign a
  • UnityLuaMvvM Lua 带通知的Mode类

    实现数据更新UI自动刷新的核心代码 欢迎关注https gitee com xiongks UnityMVVM mode function modeType local obj obj modeType modeType obj filds
  • Unity WebGL错误集锦

    ips 0 Unity的PlayerSettings的otherSettings或者Publish Settings里面的Enable Exceptions里面选择Full StackTrace 可以在打出的包中的浏览器的webgl打印出错
  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染公式 渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中 要计算总的反射光 每个入射方向的贡献 必须将他们在半球上相加 为入射光线 与法线 的夹角 为方便计算可以使用法线向量和入射向量 单位化 的乘积表示 对于基于图像的
  • 【Unity&C#&随机数】随机数

    一个简单的随机数获得 0或1 使用了这样的代码 想要获得0或者1 if Input anyKeyDown float i 1 if i 1 i Random Range 0 Rang i i lt 0 5 0 1 Debug Log Cou
  • unity制作一个可以自由滑动收缩的历史记录功能。

    公司在做一款模拟经营类的卖车游戏 需要一个简单的历史记录功能 放在左上角 记录最近20条的收入 支出记录 超过2秒不动则收起 收起时展示最近的一个消息记录 用到的组件是ScrollView 使用方法可以参考我写过的一篇博客 ScrollVi
  • c#获取cpu序列号

  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity Shader入门精要第七章 基础纹理之遮罩纹理

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 实践 参考 前言 遮罩纹理 mask texture 是本章要介绍的最后一种纹理 它非常有用 在很多商业游戏中 都可以见到它的身影 那么什么是遮罩呢 简单来讲 遮罩允许我们
  • UnityVR--组件3--Line Renderer--线性渲染

    目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1 使用Line Renderer绘制线段 应用1实现 使用系统工具或自定义工具绘制线段 应用2 Trail Render
  • GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

    1 Goole在今年6月份出的新政策 不在使用safetynet 而使用Play Integrity API 2 项目本身没有使用过safetynet 3 使用了firebase 查阅资料 解决方案如下 implementation pla
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • Unity旋转以及万向锁问题

    我之前研读了一些关于unity旋转相关的博客 一直想抽个时间写个总结 但是由于实习太忙一直没有写 趁着今天请了假晚上有时间把这段时间一些学习心得写出来 Unity inspector面板中的Rotation 在unity中 想必大家最先接触
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • U3D游戏开发中摇杆的制作(NGUI版)

    在PC端模拟摇杆 实现控制摇杆让玩家或者物体移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine public clas
  • 游戏开发常见操作梳理之角色选择一

    进入游戏后 我们经常会进入角色选择的界面 通常是左右两个按钮可以更改角色供玩家选择 对于这种界面我们通常使用数据持久化将角色信息存储起来 接下来的笔记中 我将使用自带的数据持久化系统对其进行操作 实现角色的选择页面 后续会更新xml系列的文
  • 游戏开发常用实践操作之按动任意键触发

    接下来一些笔记会对于一些大大小小的实践操作进行记录 希望对你有所帮助 在游戏中 我们经常会遇到一些按动任意键触发的操作 接下来展示核心代码 以下是对于Unity中的操作 使用的UI是NGUI 对于核心操作没有影响 你可以自己置换 void
  • 游戏开发中常见系统梳理之背包系统的实现一

    游戏中几乎都存在大大小小的背包系统 接下来我将讲述背包系统具体是如何实现的 完整源码 以下是使用unity NGUI实现 使用txt配置的方法 后续更新UGUI Json实现的背包系统敬请期待 背包中的物品我们常常将其制作成预设体 通过改变

随机推荐

  • More Info for Email AdminsStatus code 554 5.4.14

    Your message to account security noreply accountprotection microsoft com couldn t be delivered account security noreply
  • System.getProperty用法

    转自 http blog darkmi com 2011 03 16 1666 html System getProperty 用于获取当前的系统属性 比如java版本 操作系统名称 区域 用户名等 这些属性一般由jvm自动获取 不能手工设
  • IQ调制的过程

    正交调制 IQ modulation IQ调制器的相移器原理 正交调制数学表达和图形化过程i显示 关键元素都在里面 普通调制的过程 PAM调制的原理 IQ modulators are versatile building blocks f
  • 如何将Visio绘制的图保存为300dpi的tif图片

    采用visio 2013绘图 用ctrl A全选绘制的图 开始 另存为 选择保存类型为tif Tif输出设置 分辨率设为300dpi 300dpi 验证一下图片分辨率 右击生成的tif文件 属性 详细信息
  • 问题记录:js的=>和function

    这个问题搞了一整天 是这么一个功能
  • 认识 maven_我的总结

    认识 maven maven Apache Maven 是一种用于软件项目管理工具 基于 Project Object Model POM 用来管理项目的构建 汇报及文档生成等功能 软件开发 开发 gt 测试 gt 安装与部署 开发阶段 依
  • Apache Flink Checkpoint 应用实践

    Checkpoint 与 state 的关系 Checkpoint 是从 source 触发到下游所有节点完成的一次全局操作 下图可以有一个对 Checkpoint 的直观感受 红框里面可以看到一共触发了 569K 次 Checkpoint
  • STM32_USB之完全双缓存(包括发送和接收) -- 更新中断处理

    STM32的USB双缓存接收代码其实已经可以在ST提供的USB示例代码中找到 只要稍加修改 就可以得到将近1MB的数据接收性能 虽然Datasheet中说明USB发送也同样可以使用双缓存 但并没有示例代码 由于为了测试性能 自己做了一个 测
  • R语言GGPLOT2绘制圆环图雷达图/星形图/极坐标图/径向图Polar Chart可视化分析汽车性能数据

    最近我们被客户要求撰写关于可视化的研究报告 包括一些图形和统计输出 漂亮的圆形图 我不确定对数据分析师本身是否有额外的好处 但如果能吸引决策者的注意 那对我来说就是额外的价值 然而 用coord polar 或偶尔发现的ggplot2中的c
  • Lua的线程和状态 及协程

    luaL loadstring L return coroutine create function end nCallResult lua pcall L 0 1 0 创建一个协程和lua newthread创建一个线程一样 不过这个创建
  • 关于mysql group_concat不得不说的事

    mysql中 group concat函数将group by产生的同一个分组中的值连接起来 返回一个字符串结果 当查询的数据过多时 group concat超出了默认值1024个字符 超过就会截断 导致group concat查询出来的数据
  • ppt怎么压缩文件大小?学会这几种方法

    ppt 用office PowerPoint 制作的幻灯片 用于编辑 播放 各种操作 简单易学 在实际的生活和办公过程中 ppt文件的应用范围非常广泛 同样的 ppt也是非常重要的工具之一 很多时候 我们需要对ppt文件进行压缩 从而满足p
  • 原理图中的电阻旁边有个”NC“,什么意思?

    NC表示此处空贴 即此处不贴任何电子器件 如果安装的话 电路会有另外的功能 或许在性能上会有变化 常用于电路板贴装技术中 电路板贴装是回流焊中的一种工艺流程 回流焊也叫再流焊 是伴随微型化电子产品的出现而发展起来的焊接技术 主要应用于各类表
  • leetcode-无重复元素的最长子串

    给定一个字符串 请你找出其中不含有重复字符的最长子串的长度 例如对于字符串 str adfhdsla 它的无重复字符的最长子串为 sub adfhdsl 很显然 首先要有一个函数用以判断当前的子串中有无重复元素 然后寻找子串的工作就要用这个
  • 闲云:unity中不能识别monobehevior关键字的问题

    有时候一些小问题很恼人 如unity中新建脚本后不能识别monobehevior关键字 在vs2017右侧的解决方案中点击刷新图标 或者把不能识别的脚本添加到vs2017右侧的解决方案中的Assets中即可 还不行就点击 排除 然后再 添加
  • QApplication和QCoreApplication

    一 QCoreApplication用于non GUI的应用程序 不需要依赖QtGui库 QApplication用于包含GUI的应用程序 需要用到QtGui库 Qt是一个开源的C 库 主要用来开发GUI程序 但同时 它也支持控制台程序的开
  • log4j使用说明

    查阅阿里的jva开发手册 我们发现在打印日志的时候有一下几条是强制的 1 应用中不可直接使用日志系统 Log4j Logback 中的API 而应依赖使用日志框架SLF4J中的API 使用门面模式的日志框架 有利于维护和各个类的日志处理方式
  • 前端自测.

    交互 宽度1200px 表单校验 长度 敏感词汇 初始化 loading 结果 空 表单重复提交 loading 请求拦截 限流 数字 大数据 千分位 文本长度 省略号 数据查询结果校验 按条件查询结果是否正确 空数据传参 xx 参数头尾有
  • go struct{} 空结构体的特点和作用

    空结构体的特点和作用 参考代码 package main import fmt unsafe func main empStruct 空结构体的实例和作用 func empStruct 空结构体的特点 1 不占用内存 2 地址不变 var
  • Input

    Unity3d的所有输入 包括键盘鼠标和智能手机触摸等都是通过这一个类来完成 Input类 见API http docs unity3d com ScriptReference Input html 输入Input类使用 建议在Updata