unity3d OnMouseDown()函数没被调用

为了实现一个获取鼠标点击的物体的功能,写了以下代码。由于这个不针对特定GameObject,一开始我将这个脚本挂载在摄像机上,结果运行后,点击鼠标,并没有输出Mouse,说明没调用到OnMouseDown函数。后面我把该脚本放到场景中一个物体上,运行后发现,只有点击该物体时,才会调用到OnMouseDown,点击其他物体都没反应。要使得可以选中任意物体,把这段代码放在update函数中,就可以了。

结论:OnMouseDown()只针对脚本挂载的物体有效。

加一点说明:物体要有碰撞器才有效果。

PS:注意大小写OnMouseDown()

   GameObject selectedGmObj;
   void OnMouseDown()
    {
        Debug.Log("Mouse");
        /*鼠标选中gameobject */
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                selectedGmObj = hit.collider.gameObject; //获得点击的物体
                Debug.Log(selectedGmObj.name);
            }
        }
    }


你可能感兴趣的:(Unity3D)