RaycastHit与canvas有关吗?

时间:2016-07-04 13:05:37

标签: c# unity3d

仅当命中的游戏对象不在画布中时,此脚本才会在控制台上显示消息。在位于画布内的按钮上释放鼠标按钮时,脚本不会调试任何内容。我该如何解决这个问题?

RaycastHit hit;

void Update () 
{
    if(Input.GetMouseButtonUp(0))
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        //RayHit hit;
        if(Physics.Raycast(ray, out hit))
        {
            // do what you want
            Debug.Log(hit.collider.gameObject.tag);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以像这样使用来获取单击的UI对象。

    if (Input.GetMouseButtonDown(0))
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);


        if (EventSystem.current.IsPointerOverGameObject())
        {
            Debug.Log(EventSystem.current.currentSelectedGameObject.GetComponent<Text>().name);

        }
  

EventSystem.current.currentSelectedGameObject.GetComponent()。名称

将返回点击的对象和

  

EventSystem.current.IsPointerOverGameObject()

将检查是否有点击UI对象。