Unity:了解UI组件中“Raycast Target”的工作原理

时间:2017-06-16 07:30:19

标签: unity3d unity5

我正在尝试“Raycast Target”选项的工作方式。我认为它的工作原理是

  1. 如果选中此项,那么我的UI元素将使用鼠标/触摸事件,其背后的任何3D对象都不会获得鼠标/触摸事件。
  2. 如果未选中,则会将鼠标事件传递给其后面的3D对象。
  3. 但他的表现并非如此。

    我在画布上有一个UI文本,后面有一个3D立方体游戏对象。我在UI文本上添加了以下脚本

    public class CaptureUIObjectEvent : MonoBehaviour, IPointerClickHandler
    {
        public void OnPointerClick(PointerEventData eventData)
        {
            Debug.Log("In UI click event");
        }
    }
    

    我在3D对象上添加了以下脚本

    public class Capture3DObjectEvent : MonoBehaviour 
    {
        void OnMouseDown()
        {
            Debug.Log("In 3D click event");
        }
    }
    

    选中“Raycast目标”:UI文本和3D对象都在捕获事件。所以两个日志都打印出来了。 UI文本未阻止click事件。我认为这不是正确的行为。此外,首先打印3D对象事件日志。我认为Unity在场景中有多个默认的raycaster用于UI(图形raycaster )和3D( Physics raycaster )对象。是这样吗?这种行为是否预期,这是否意味着我的3D对象将始终点击鼠标?

    “未选中Raycast目标”:仅点击3D对象。我认为这是预期的。

    我必须使CaptureUIObjectEvent派生自IPointerClickHandler以使其捕获任何事件,但对于3D对象,我不必使用它。我知道这也是因为UI和3D对象使用了不同的raycaster。是这样吗?

    这是我的场景 enter image description here

0 个答案:

没有答案