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分别表示鼠标的两个侧键。

 触发结果:

 

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

原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13217679.html