• Unity --- 基本键鼠操作


    1.我们对于键盘和鼠标的点击操作相当于在输入数据,这些输入的数据都会被存储到对应的数据缓存区中供程序读取和调用

    而我们所谓的游戏程序中的键鼠操作其实就是当我们通过键盘输入了特定数据之后,游戏程序马上从缓存区中读取到这个数据,并通过这个输入的数据执行一系列对应的操作

    比如说我们从键盘中输入数据字符w后,游戏程序从输入缓存区中读取这个w,并根据这个输入的数据调用对应的前进方法,然后游戏中的人物向前走一步

    但是问题来了,游戏程序无法得知我们什么时候会从敲击键盘输入数据,那么它就不知道什么时候去缓存区读取数据,所以游戏程序为了解决这个问题,选择的方法是在游戏程序执行的时候就开始不停的扫描输入缓存区,如果里面有数据就读取,这个扫描的频率是每帧一次 --- 相当于1s60次

    1.由于是在游戏执行的时候全程都在扫描,无论你什么时候输入我都处于扫描状态,这样的话就不会错过任何数据

    2.人的输入频率远小于扫描频率,所以不可能出现漏扫的情况


    具体的代码实现:

    Input是输入类,GetMouseButtonDown方法可以获取当前鼠标按下后的输入状态并将其与括号内的参数进行对比,如果相同返回ture,如果不同,返回false 

    (鼠标的都有一个值表示,没错滚轮是可以按下的)

    注意!!这个方法只有在鼠标按下的瞬间执行一次,后面哪怕鼠标一直按着也不会执行

    那么我们如何检测鼠标持续按下呢? --- 把上面那个方法的down去掉就好

    注意点:

    1.鼠标按下按键的生命周期分为两个节点(起点和终点)和一段过程

    鼠标按下按键的那一瞬间是一个起点,鼠标抬起按键的一瞬间是终点,从起点走到终点所花的时间就是过程

    2.GetMouseButtonDown这个方法之会获取按键按下的那一瞬间的值并将其与括号内参数进行比较,相同返回ture,不同返回false

    GetMouseButton这个方法获取鼠标按下过程中的值并将其与括号内的参数进行比较,相同返回ture,不同返回false

    GetMouseButtonUp则会在鼠标按键抬起的瞬间获取抬起的键的值,并将其与括号内的参数进行比较,相同返回ture,不同返回false

     


    键盘按键和鼠标按键的操作其实差不多:

    下面的三个函数的返回值都是bool,如果按下/持续/抬起与括号内的参数一致的话,返回ture,否则返回false

    然后括号内的键盘参数用KeyCode直接访问静态只读属性A,B,C...来获取键盘的可能按值

     

    按键不用枚举使用字符也是可以的,只不过要用小写字符 

     

     

  • 相关阅读:
    [MFC]:Edit Control 编辑框控件之EN_KILLFOCUS消息只响应第一个失去焦点的问题分析
    VTK与OpenGL是什么,有什么关系?
    shell脚本之文件读写
    el-input输入框高度修改
    react useReducer
    Firefox火狐浏览器显示你的连接不安全,是什么意思?
    Mysql存储过程案例!
    nodejs+java+python家乡美食分享推荐网站系统vue+elementui
    基于双参数蜜蜂算法解决车辆路径问题(Matlab代码实现)
    【Git】git 分支或指定文件回退到指定版本
  • 原文地址:https://blog.csdn.net/qq_51947882/article/details/126488520