zoukankan      html  css  js  c++  java
  • Unity 鼠标点击事件

    鼠标事件

     鼠标事件,都是当鼠标和GUI或者碰撞体(Collider)交互的时候触发的。

     需要注意的是,drag 其实就是鼠标 Down 后到 Up 之前持续每帧都会发送此消息。

    常见的鼠标事件:

    • OnMouseDown:当鼠标上的按钮被按下时触发的事件

    • OnMouseDrag:当用户鼠标拖拽GUI元素或碰撞体时调用

    • OnMouseEnter:当鼠标进入物体范围时被调用

    • OnMouseExit:当鼠标退出时被调用

    • OnMouseOver:当鼠标移动到某对象的上方时触发的事件

    • OnMouseUp:当鼠标按键被松开时触发的事件

    按下事件:Input.GetMouseButtonDown()

     当鼠标某一个按键按下时,便会返回 True,但是即使玩家一直按着鼠标按键,也仅仅只会返回一次 True。

     1     void Update()
     2     {
     3         if (Input.GetMouseButtonDown(0))
     4         {
     5             print("鼠标左键被按下!");
     6         }
     7         if (Input.GetMouseButtonDown(1))
     8         {
     9             print("鼠标右键被按下!");
    10         }
    11         if (Input.GetMouseButtonDown(2))
    12         {
    13             print("鼠标中键被按下!");
    14         }
    15         if (Input.GetMouseButtonDown(3))
    16         {
    17             print("鼠标侧键被按下!");
    18         }
    19     }

     这个方法只有一个参数,其中:0 表示鼠标左键,1表示鼠标右键,2表示鼠标中键,3和4分别表示鼠标的两个侧键。

     触发结果:

     

    抬起事件:Input.GetMouseButtonUp()

     鼠标在按下后肯定要抬起,按下的时候触发按下事件,抬起的时候触发抬起事件。

     1     void Update()
     2     {
     3         if (Input.GetMouseButtonUp(0))
     4         {
     5             print("鼠标左键抬起!");
     6         }
     7         if (Input.GetMouseButtonUp(1))
     8         {
     9             print("鼠标右键抬起!");
    10         }
    11         if (Input.GetMouseButtonUp(2))
    12         {
    13             print("鼠标中键抬起!");
    14         }
    15         if (Input.GetMouseButtonUp(3))
    16         {
    17             print("鼠标侧键抬起!");
    18         }
    19     }

     与按下事件相同,也只有一个参数,其中:0 表示鼠标左键,1表示鼠标右键,2表示鼠标中键,3和4分别表示鼠标的两个侧键。

     触发结果:

     

    长按事件:Input.GetMouseButton()

     检测鼠标按键中某个按键一直按下的状态或者是获得按下的按键,如果一直按着鼠标按键,便会多次返回 True。

     1     private float timer = 0;
     2 
     3     void Update()
     4     {
     5         if (Input.GetMouseButton(0))
     6         {
     7             timer += Time.deltaTime;
     8         }
     9         else if (Input.GetMouseButtonUp(0) && timer != 0)
    10         {
    11             print("鼠标左键长按" + timer + "秒!");
    12             timer = 0;
    13         }
    14         if (Input.GetMouseButton(1))
    15         {
    16             timer += Time.deltaTime;
    17         }
    18         else if (Input.GetMouseButtonUp(1) && timer != 0)
    19         {
    20             print("鼠标右键长按" + timer + "秒!");
    21             timer = 0;
    22         }
    23     }

     和之前的两个事件一样,只有一个参数,其中:0 表示鼠标左键,1表示鼠标右键,2表示鼠标中键,3和4分别表示鼠标的两个侧键。

     触发结果:

     

    *** |  以上内容仅为学习参考、学习笔记使用  | ***

  • 相关阅读:
    [LeetCode] Rabbits in Forest 森林里的兔子
    [LeetCode] 780. Reaching Points 到达指定点
    [LeetCode] Swim in Rising Water 在上升的水中游泳
    [LeetCode] 777. Swap Adjacent in LR String 交换LR字符串中的相邻项
    [LeetCode] Split BST 分割二叉搜索树
    [LeetCode] Global and Local Inversions 全局与局部的倒置
    [LeetCode] Minimize Max Distance to Gas Station 最小化去加油站的最大距离
    [LeetCode] Sliding Puzzle 滑动拼图
    [LeetCode] Basic Calculator IV 基本计算器之四
    [LeetCode] Jewels and Stones 珠宝和石头
  • 原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13217679.html
Copyright © 2011-2022 走看看