unity3d OnMouseDown函数

时间:2014-05-18 09:35:23

标签: unity3d

我是Unity3D的新手。我想做一件简单的事情。但是不能这样做。我有一个.obj文件,它是一个3d密钥文件。我做了以下事情:

  1. 在unity3D
  2. 中导入此密钥(到资产)
  3. 将此键添加到场景(从资源到层次结构)
  4. 向此密钥添加脚本
  5. OnMouseDown()函数添加到此脚本,如下所示 -

    void OnMouseDown() 
    {
        Debug.Log ("clicked...");
    }
    
  6. 但是当我点击该键时,控制台中没有显示任何消息。请告诉我这是什么问题?

4 个答案:

答案 0 :(得分:2)

  1. 确保游戏对象不在“Ignore Raycast”层
  2. 在更新功能中使用以下内容以查看光线投射是否正常工作。

    void Update(){

    if (Input.GetMouseButtonDown (0)) {
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
               RaycastHit hit;
             if (Physics.Raycast(ray, out hit)) {
              Debug.Log ("Name = " + hit.collider.name);
              Debug.Log ("Tag = " + hit.collider.tag);
              Debug.Log ("Hit Point = " + hit.point);
              Debug.Log ("Object position = " + hit.collider.gameObject.transform.position);
              Debug.Log ("--------------");
             }
           }
    }
    

答案 1 :(得分:0)

OnMouseDown及其相关功能实际上都是旧系统。用于此的较新系统是事件系统。

特别是为了获得鼠标点击,您将在类中实现此接口: http://docs.unity3d.com/460/Documentation/ScriptReference/EventSystems.EventTriggerType.PointerClick.html

但实际上有一种更简单的方法可以在没有代码的情况下完成。 使用此组件: http://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.html

然后,您可以直观地将鼠标单击事件转发给其他人。

如果你没有完全按照我到目前为止所说的那样,真正开始的是学习UI系统。你可以在这里找到视频教程: http://unity3d.com/learn/tutorials/modules/beginner/ui/ui-canvas

为了说清楚,UI系统不只是用于UI。 UI系统运行EventSystem,您可以使用它将输入事件转发到整个场景中的任何对象3D或2D。 UI教程将解释该EventSystem的用法。

答案 2 :(得分:0)

如果要使用OnMouseDown触发对象,则需要为3D对象指定一个对撞机:

  

当用户在GUIElement或Collider上按下鼠标按钮时,将调用OnMouseDown。

     

此事件将发送到Collider或GUIElement的所有脚本。

答案 3 :(得分:0)

您也可以通过覆盖点击功能来做到这一点

public override void OnPointerClick(PointerEventData data)
{
    Debug.Log("OnPointerClick called.");
}