我是Unity3D的新手。我想做一件简单的事情。但是不能这样做。我有一个.obj文件,它是一个3d密钥文件。我做了以下事情:
将OnMouseDown()
函数添加到此脚本,如下所示 -
void OnMouseDown()
{
Debug.Log ("clicked...");
}
但是当我点击该键时,控制台中没有显示任何消息。请告诉我这是什么问题?
答案 0 :(得分: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.");
}