为了实现一个获取鼠标点击的物体的功能,写了以下代码。由于这个不针对特定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);
}
}
}