Unity键位输入及Input类(借鉴大神,作为笔记)

您所在的位置:网站首页 input=use键 Unity键位输入及Input类(借鉴大神,作为笔记)

Unity键位输入及Input类(借鉴大神,作为笔记)

2024-07-15 01:09:43| 来源: 网络整理| 查看: 265

一、Unity的基本输入事件(最常用):  

1 . 获得键盘  

 Input.GetKey(KeyCode.A)

Input.GetKeyDown(KeyCode.A)

Input.GetKeyUp(KeyCode.A)

 2.获得鼠标信息

Input.mousePosition //  鼠标位置 Input.GetMouseButton 获取按钮

3.轴输入

 Input.GetAxis 获取轴 根据坐标轴名称返回虚拟坐标系中的值。  使用控制器和键盘输入时此值范围在-1到1之间;

1、Input类中的常用属性

属性名

类型

属性类型

含义

anyKey

boolget

获取任意键按住

anyKeyDown

bool

get;

获取任意键按下

mousePosition

Vector3

get;

获取鼠标移动的坐标

2、Input类中常用属性

     (1)、GetKey(KeyCode key)

          方法类型:静态。

          参数:key—键盘上的某个键。

         返回值:bool—当键盘上某个键被一直按住的时候,其返回值为true,否则为false。

          含义:检测键盘上的某个键是否被一直按住,如果该键一直按住,其返回值为true,否则为false。

          重载方法:GetKey(string name)

     (2)、GetKeyDown(KeyCodekey)

          方法类型:静态。

           参数:key—键盘上的某个键。

          返回值:bool—当键盘上某个键被按下的时候,其返回值为true,否则为false。

含义:检测键盘上的某个键是否被按下,如果该键被按下,其返回值为true,否则为false。

重载方法:GetKeyDown(string name)

(3)、GetKeyUp(KeyCodekey)

      方法类型:静态。

           参数:key—键盘上的某个键。

          返回值:bool—当键盘上某个键按下之后抬起的时候,其返回值为true,否则为false。

含义:检测键盘上的某个键是否被按下之后抬起,如果该键被按下之后抬起,其返回值为true,否则为false。

重载方法:GetKeyUp (string name)

 (4)、GetMouseButtonDown(intbutton)

       方法类型:静态。

       参数:button—表示鼠标上的键,0:表示鼠标左键,1:表示鼠标右键,2表示鼠标中键,3:表示鼠标上键,4:表示鼠标下键(其中3和4件不经常用,因为有的鼠标上没有这两个键)。

           返回值:bool—当鼠标上某个键被按下之后,其返回值为true,否则为false。

含义:检测鼠标上的某个键是否被按下,如果该键被按下,其返回值为true,否则为false。

(5)、GetAxis(stringaxisName)

         方法类型:静态。

         参数:axisName—轴向,Horizontal:表示水平方向,其值从-1到1之间变化,当A键被按下的时候其在水平方向上的向量为0-1(取不到0),当D键被按下的时候其在水平方向上的向量为-1-0(取不到0),当A键和D键都没有被按下的时候,其水平方向上的向量为0;Vertical:表示竖直方向,其值从-1到1之间的变化,当W键被按下的时候其在竖直方向上的向量为0-1(取不到0),当S键被按下的时候其在竖直方向上的向量为-1-0(取不到0),当S键和W键都没有被按下的时候,其竖直方向上的向量为0。

         返回值:float—按下设定的某个键之后,表示变化的数值,从-1到1之间变化。

         含义:检测键盘上某个按键被一直按住的时候,其在设定的方向上的变化。

  鼠标点击:  Input.GetMouseButtonDown(0)           //鼠标左键按下  Input.GetMouseButtonDown(1)           //鼠标右键按下  Input.GetMouseButtonUp(0)             //鼠标左键抬起  Input.GetMouseButtonUp(1)             //鼠标右键抬起    键盘事件:  Input.GetKeyDown(KeyCode.键值)    //键盘按下  Input.GetKeyUp(KeyCode.键值)         //键盘抬起    常用的键值:  KeyCode.大写字母A-Z                              //字母键  KeyCode.UpArrow  KeyCode.DownArrow  KeyCode.LeftArrow  KeyCode.RightArrow  KeyCode.Return                                   //回车  KeyCode.Escape                                   //Esc返回  KeyCode.Space                                    //空格  KeyCode.LeftControl  KeyCode.RightControl  KeyCode.LeftShift  KeyCode.RightShift  KeyCode.Tab  KeyCode.Delete  KeyCode.Backspace  二、获取键盘或者各电视遥控器键值用于输入事件适配

using UnityEngine;  using System.Collections;  using UnityEngine.UI;  public class KeyCode : MonoBehaviour {        //显示键值信息的UI文本组件      public Text keycodeText;        //只能在OnGUI内获取键值      void OnGUI()      {          if (Input.anyKeyDown)          {              Event e = Event.current;              if (e.isKey)              {                  keycodeText.text ="按下的键值:" + e.keyCode.ToString();              }          }      }  }  

Unity键值表:

 

/** 鼠标键值 **/  Mouse0  鼠标左键  Mouse1  鼠标右键  Mouse2  鼠标中键  Mouse3  鼠标第3个按键  Mouse4  鼠标第4个按键  Mouse5  鼠标第5个按键  Mouse6  鼠标第6个按键    /** 键盘键值 **/  //方向键  UpArrow     方向键上  DownArrow   方向键下  RightArrow  方向键右  LeftArrow   方向键左    //F功能键  F1   功能键F1  F2   功能键F2  F3   功能键F3  F4   功能键F4  F5   功能键F5  F6   功能键F6  F7   功能键F7  F8   功能键F8  F9   功能键F9  F10  功能键F10  F11  功能键F11  F12  功能键F12  F13  功能键F13  F14  功能键F14  F15  功能键F15    //数字键  Alpha0 按键0  Alpha1 按键1  Alpha2 按键2  Alpha3 按键3  Alpha4 按键4  Alpha5 按键5  Alpha6 按键6  Alpha7 按键7  Alpha8 按键7  Alpha9 按键9    //字母键  A  ‘a’键  B  ‘b’键  C  ‘c’键  D  ‘d’键  E  ‘e’键  F  ‘f’键  G  ‘g’键  H  ‘h’键  I  ‘i’键  J  ‘j’键  K  ‘k’键  L  ‘l’键  M  ‘m’键  N  ‘n’键  O  ‘o’键  P  ‘p’键  Q  ‘q’键  R  ‘r’键  S  ‘s’键  T  ‘t’键  U  ‘u’键  V  ‘v’键  W  ‘w’键  X  ‘x’键  Y  ‘y’键  Z  ‘z’键    //功能键  Backspace        退格键  Delete           Delete键  Tab              Tab键  Clear            Clear键  Return           回车键  Pause            暂停键  Escape           ESC键  Space            空格键  Numlock          Numlock键  Capslock         大小写锁定键  ScrollLockScroll Lock键  RightShift       右上档键  LeftShift        左上档键  RightControl     右Ctrl键  LeftControl      左Ctrl键  RightAlt         右Alt键  LeftAlt          左Alt键  LeftApple        左Apple键  LeftWindows      左Windows键  RightApple       右Apple键  RightWindows     右Windows键  AltGr            Alt Gr键  Help             Help键  Print            Print键  SysReq           Sys Req键  Break            Break键  Insert           Insert键  Home             Home键  End              End键  PageUp           PageUp键  PageDown         PageDown键    //符号键  Exclaim         ‘!’键  DoubleQuote      双引号键  Hash             Hash键  Dollar          ‘$’键  Ampersand        Ampersand键  Quote            单引号键  LeftParen        左括号键  RightParen       右括号键  Asterisk        ‘ * ’键  Plus            ‘ + ’键  Comma           ‘ , ’键  Minus           ‘ - ’键  Period          ‘ . ’键  Slash           ‘ / ’键  Colon           ‘ : ’键  Semicolon       ‘ ; ’键  Less            ‘ < ‘键  Equals          ‘ = ‘键  Greater         ‘ > ‘键  Question        ‘ ? ’键  At              ‘@’键  LeftBracket     ‘ [ ‘键  Backslash       ‘ \ ’键  RightBracket    ‘ ] ’键  Caret           ‘ ^ ’键  Underscore      ‘ _ ’键  BackQuote       ‘ ` ’键    //小键盘  Keypad0  小键盘0  Keypad1  小键盘1  Keypad2  小键盘2  Keypad3  小键盘3  Keypad4  小键盘4  Keypad5  小键盘5  Keypad6  小键盘6  Keypad7  小键盘7  Keypad8  小键盘8  Keypad9  小键盘9  KeypadPeriod      小键盘“.”  KeypadDivide      小键盘“/”  KeypadMultiply    小键盘“*”  KeypadMinus       小键盘“-”  KeypadPlus        小键盘“+”  KeypadEnter       小键盘“Enter”  KeypadEquals      小键盘“=” 

-----------------------------------------------------------------

补充

截获鼠标,键盘的消息

监听事件我们都是在Update里面监听的。 

Unity的虚拟轴打开:Edit-->Project Settings-->Input,打开的各个Name就是双引号里面要填的,记不住就打开查,也可以自己定义一些按键。

 

一、Input的主要变量

1: mousePosition: 当前鼠标的像素坐标;2: anyKey/anyKeyDown: 当前是否有按键按住; 3: inputString: 本次update时间间隔内输入的字符串;4: acceleration: 重力加速度传感器的值,加速度的方向;5: touches: 返回当前所有触摸对象的列表Touch[],触摸屏可以支持多根手指轨迹;

 

二、Input的主要方法

1: GetAxis/GetAxisRaw: 返回表示虚拟轴的值:2: GetButton/GetButtonDown/GetButtonUp 虚拟按钮3: GetKey/GetKeyDown/GetKeyUp 按下制定按钮;4: GetMouseButton GetMouseButtonDwon GetMouseButtonUp5: GetTouch(index) 返回当前触控Touch对象;6: 打开InputManager: 配置虚拟轴;

 

三、Input使用实例

1.创建一个Canvas2.对Canvas进行初始化3.创建一个Image的UI节点作为Canvas的子节点,名字叫bg,拖进背景图片到这个节点中。4.创建一个叫Game_scene的脚本,挂载到Canvas下面

5.Game_scene脚本内容:

void Update () { // 以屏幕的左下脚为原点; // Debug.Log(Input.mousePosition); // 当前鼠标的位置; // 如果一个按键一直按住,那么每帧都会返回True,只到弹起; // 键盘,鼠标的key /*if (Input.anyKey) { Debug.Log(Input.anyKey); }*/ // 检测按键按下,但是,一旦按下以后,后面就不触发了。 // 如果一个按键一直按着,那么这个只会按下的那帧触发true, /*if (Input.anyKeyDown) { Debug.Log(Input.anyKeyDown); }*/ // 返回你在本次update里面输入的assic字符 /*if (Input.inputString.Length > 0) { Debug.Log(Input.inputString); }*/ // end // 重力加速度的方向,那你就可以根据这个方向来获得输入。 // 如果没有重力传感器,那么就是(0, 0, 0); Vector3的对象; // Debug.Log(Input.acceleration); // Debug.Log(Input.touchCount); // 获得当前的触摸的事件的个数; /*if (Input.touchCount > 0) { // Input.touches // Touch []; }*/ // Horizontal 是这个虚拟轴,Eidt --> ProjectSetting -->Input // 由1-->0, 递减的插值的; // GetAxis 变化的时候,是有插值的。 // float value = Input.GetAxis("Horizontal"); /*float value = Input.GetAxisRaw("Horizontal"); if (value != 0.0f) { Debug.Log(value); }*/ // 距离上一次鼠标的变化; dx, dy /*float mouse_dx = Input.GetAxis("Mouse X"); float mouse_dy = Input.GetAxis("Mouse Y"); Debug.Log(mouse_dx + ":" + mouse_dy);*/ // 不会有插值的,1,0 // float value = Input.GetAxisRaw("Jump"); // Debug.Log(value); // 鼠标左键, /*if (Input.GetButton("Fire1")) { Debug.Log("fire1 click"); }*/ // 只是在按钮,按下那一刻,为真, /*if (Input.GetButtonDown("Fire1")) { Debug.Log("fire1 down"); } //弹起来那一刻为真 if (Input.GetButtonUp("Fire1")) { Debug.Log("fire1 up"); }*/ // 键盘上的P按键, 如果按下不松,会一直为true // GetKeyDown, GetKeyUp,只在状态改变的时候为真 /*if (Input.GetKeyDown(KeyCode.P)) { Debug.Log("Key p down"); } if (Input.GetKeyUp(KeyCode.P)) { Debug.Log("Key p up"); } if (Input.GetKey(KeyCode.P)) { Debug.Log("P"); }*/ // 判断鼠标按键有没有按下, int button(0(左), 1(右), 2(中)) if (Input.GetMouseButtonDown(2)) { Debug.Log("mouse left down"); } if (Input.GetMouseButtonUp(2)) { Debug.Log("mouse left up"); } // Move来使用。 if (Input.GetMouseButton(2)) { Debug.Log("mouse left all ways"); } }

 

四、虚拟轴定义

1: Name: 轴的名字;2: Descriptive: 正向方向描述;3: Button:正向反向按钮和附加按钮;4: Gravity:复位的速度,用于按键和鼠标;5: Dead: 小于该值的输入值, 都会被视为0,用于摇杆。6: Sensitivity(灵敏度): 对于键盘输入,该值越大则响应时间越快,该值越小则越平滑。对于鼠标输入,设置该值会对鼠标的实际移动距离按比例缩放7: Snap对齐: 如果启用该设置,当轴收到反向的输入信号时,轴的数值会立即置为0,仅用于键/鼠标 输入。 8:Invert 反转: 启用该参数可以让正向按钮发送负值,反向按钮发送正值。9:Type 类型: 所有的按钮输入都应设置为 键/鼠标 (Key / Mouse) 类型,对于鼠标移动和滚轮应设为 鼠标移动(Mouse Movement)。摇杆设为摇杆轴 (Joystick Axis),用户移动窗口设为窗口移动 (Window Movement)。 10:Axis 轴: 设备的输入轴(摇杆,鼠标,手柄等) 11:Joy Num 摇杆编号: 设置使用哪个摇杆。默认是接收所有摇杆的输入。仅用于输入轴和非按键。

 

 

五、Touch对象

1:fingerID; 手指ID2: position 手指位置3: deltaPosition 距离上一次的偏移;4: phase: 触摸相位TouchPhase.Began Moved, cancel, ended;5: Touch事件同时会触发 GetMouseButton(0)事件,能够使用Input.GetAxis("Mouse X/Y")获取触摸偏移位置;6: 到底用Touch还是用Mouse,如果对触摸的准确性要求不高,可以使用Mouse,否则还是区别对待,使用Touch,如果要多点触控,那么自己判断,直接自己使用Touch

void Update () {if (Input.touchCount > 0) { Touch t = Input.GetTouch(0); // t.position; //触摸的位置; // t.deltaPosition; // 距离上一次,位置的偏移 // t.phase // 触摸的相位,-->状态, 按下,滑动,弹起,cancel; // Touch,只在移动设备上能用,所以统一,鼠标和这个Touch, // Touch同时也会发送一个 鼠标左键的事件,模拟一次鼠标左键; // GetMouseButton(0), 鼠标,和触摸都可以当作鼠标事件来处理,那么 // 我们的代码就只要写一次。单点触摸的时候。 // 多点触摸,自己处理Touch事件。 // 单点触控 // t.position, --> mousePostion; // t.deltaPosition --> Input.GetAxis("Mouse X/Y"); // Begin(Down), ended(Up), moved(Button) // end }}


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭