菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
310
0

Unity3D 中鼠标按下时OnMouseDown()、Input.GetMouseButtonDown()和EventType.MouseDown的响应验证

原创
05/13 14:22
阅读数 90970

初学unity3D,对于其中的事件响应不是很清楚,于是写了下面的代码来验证:

1、新建.cs文件,名为testMouse.cs:

 

[csharp] view plain copy
 
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class testMouse : MonoBehaviour {  
  5.   
  6.     // Use this for initialization  
  7.     void Start () {  
  8.       
  9.     }  
  10.       
  11.     // Update is called once per frame  
  12.     void Update () {  
  13.         if (Input.GetMouseButtonDown(0))  
  14.         {  
  15.             Debug.Log("Input.GetMouseButtonDown response");  
  16.         }  
  17.     }  
  18.   
  19.     void OnMouseDown() {  
  20.         Debug.Log("OnMouseDown response");  
  21.     }  
  22.   
  23.     void OnGUI() {  
  24.         if (Event.current != null && Event.current.type == EventType.mouseDown) {  
  25.             Debug.Log("EventType.mouseDown response");  
  26.         }  
  27.     }  
  28. }  

 

2、场景中的游戏对象很简单,只有一个Cube和主相机。

 

3、将testMouse.cs组件附加到Cube上面,运行游戏,当用鼠标点击Cube时,会有如下显示:

 

4、当用鼠标单击任何除Cube外的位置都会产生如下响应:

 

 

5、这说明Event和Input.GetMousexxx事件会被任何gameobject监控到,而OnMousexxx事件只会被该脚本附加上的gameobject监控到。

 

6、为什么Event事件要写在OnGUI函数里面呢?可以再这两个文档中找到线索:

a、http://game.ceeger.com/Script/MonoBehaviour/MonoBehaviour.OnGUI.html

b、http://game.ceeger.com/Script/Event/Event.html

OnGUI函数在每帧会被调用多次。

发表评论

0/200
310 点赞
0 评论
收藏