IPointerClickHandler Unity的几个问题

时间:2018-06-04 14:25:50

标签: c# user-interface unity3d

我正在尝试使用this question中提供的信息在Unity中创建一个非常简单的按钮,但经过多次尝试后,它似乎无法正常工作。

我有一个“按钮”对象,其中包含SpriteRendererBoxCollider2D组件,Physics2DRaycaster附加到我的主相机,以及附加到对象的以下代码:

using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections;

public class ButtonController : MonoBehaviour, IPointerClickHandler
{

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }  

    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("Clicked" + eventData.pointerCurrentRaycast.gameObject.name);
    }
}

这是场景,显然没有任何障碍按钮:

enter image description here

场景中只有按钮和相机:

enter image description here

这些是连接到相机和按钮的组件:

enter image description here

enter image description here

我知道这不是严格要求在这里提出的问题,但现在已经好几天了,这本来应该是非常简单但不能让我的生活看到出了什么问题。

1 个答案:

答案 0 :(得分:0)

您是否在对象中添加了Image组件?对于要触发的事件,您需要有一个可以是RaycastTarget的组件,即它不会从空的gameObject触发,它也需要是Canvas的子项。

如果你从新场景开始并从GameObject菜单创建任何UI元素,Unity将创建一个Event System,Canvas和InputModule组件,这是一个很好的开始 - 如果你可以点击按钮,你应该得到你的调试您使用脚本单击图像 - 您的代码是正确的。

对于使用事件系统的精灵,你需要一个物理raycaster和对撞机。 3D Box对撞机可与Physics Raycaster配合使用,2D Box Collider可与Physics2D Raycaster配合使用,但如果没有对撞机,您的精灵不会拦截光线投射,它们需要碰撞器才能工作