截获鼠标,键盘的消息

监听事件我们都是在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
GetMouseButtonUp
5: GetTouch(index) 返回当前触控Touch对象;
6: 打开InputManager: 配置虚拟轴;

三、Input使用实例

1.创建一个Canvas
2.对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()) {
Debug.Log("mouse left down");
}
if (Input.GetMouseButtonUp()) {
Debug.Log("mouse left up");
} // Move来使用。
if (Input.GetMouseButton()) {
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; 手指ID
2: 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 > ) {
Touch t = Input.GetTouch();
// 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
}
}

  

关于Unity中的Input输入事件的更多相关文章

  1. js input输入事件兼容性问题

    if(navigator.userAgent.indexOf('Android') > -1){ $("#sign").on("input", funct ...

  2. 关于Unity中SteamVR_Controller.Input的错误

    当我在看某鸥的视频的时候,里面讲到用Unity做一个贪食蛇后,加入SteamVR插件,并且能用手柄控制蛇的移动.当我跟着上面一步一步做的时候,发现我代码都写完后,启动报错,而视频里面的老师讲的缺没有报 ...

  3. vue 中 限制 input 输入数字、小数位数等

    限制小数位数 <input type="number" @keydown="handleInput2" placeholder="请输入或查看& ...

  4. 【UE4 C++】Input 输入事件绑定

    轴映射与动作映射 编辑器设置input+代码实现具体动作 void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInp ...

  5. Unity事件处理机制与NGUI事件机制

    1 Unity原生 1.1 GUI void OnGUI(){ if(GUI.Button(Rect position, string text)){ //点击后立即执行 } 1.1 Input 每个 ...

  6. input输入子系统

    一.什么是input输入子系统? 1.Linux系统支持的输入设备繁多,例如键盘.鼠标.触摸屏.手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型.不同原理.不同的输入信 ...

  7. 在Unity中接入Xbox360手柄

    提要 本文主要介绍了怎样在Unity中接入Xbox360的手柄. 当我们调Input.GetAxis("Horizontal"),我们调了什么 Unity中全部关于输入的设置都在E ...

  8. INPUT输入子系统【转】

    转自:https://www.cnblogs.com/deng-tao/p/6094049.html 1.Linux系统支持的输入设备繁多,例如键盘.鼠标.触摸屏.手柄或者是一些输入设备像体感输入等等 ...

  9. Unity的Input输入

    Unity中的输入管理器由Input类进行操控.官方文档地址:https://docs.unity3d.com/ScriptReference/Input.html 中文翻译的话可以在这里:http: ...

随机推荐

  1. DataGridView合并单元格(多行多列合并)

    一.点击在拖入的显示控件(TreeList)右上方的箭头,在Treelist任务中选择数据源,添加项目数据源,依次选择数据库.数据集,新建连接,浏览选择数据库(*.mdb),依次点击 下一步,选择“表 ...

  2. AP_创建标准发票后会计科目的变化(概念)

    2014-06-04 Created By BaoXinjian 1. 创建Invoice,并查看所创建的科目

  3. DBA_实践指南系列6_Oracle Erp R12工作流通知邮件配置Email(案例)

    2013-12-06 Created By BaoXinjian

  4. DBA_实践指南系列5_Oracle Erp R12日常运维和管理(案例)

    2013-12-05 Created By BaoXinjian

  5. C#趣味程序---车牌号推断

    甲说前两位同样,乙说后两位同样,丙说四位的车牌号刚好是一个数的平方.这个车牌号是多少? using System; namespace ConsoleApplication1 { class Prog ...

  6. Intelligence System (hdu 3072 强联通缩点+贪心)

    Intelligence System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  7. Python学习笔记11:标准库之文件管理(os包,shutil包)

    1 os包 os包包含各种各样的函数,以实现操作系统的很多功能.这个包很庞杂.os包的一些命令就是用于文件管理. 我们这里列出最经常使用的: mkdir(path) 创建新文件夹.path为一个字符串 ...

  8. THINKPHP导入全部post参数

    @extract($_POST);//导入全部POST参数直接使用变量

  9. 【Android】3.23 示例23--瓦片图功能

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 地图SDK自v3.6.0起,新增瓦片图层(tileOverlay), 该图层支持开发者添加自有瓦片数 ...

  10. MySQL抓包工具:MySQL Sniffer 和性能优化

    简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端的请求,并格式化输出.输出内容包访问括时间.访问用户.来源 IP.访问 Database. ...