我正在尝试使用this question中提供的信息在Unity中创建一个非常简单的按钮,但经过多次尝试后,它似乎无法正常工作。
我有一个“按钮”对象,其中包含SpriteRenderer
和BoxCollider2D
组件,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);
}
}
这是场景,显然没有任何障碍按钮:
场景中只有按钮和相机:
这些是连接到相机和按钮的组件:
我知道这不是严格要求在这里提出的问题,但现在已经好几天了,这本来应该是非常简单但不能让我的生活看到出了什么问题。
答案 0 :(得分:0)
您是否在对象中添加了Image组件?对于要触发的事件,您需要有一个可以是RaycastTarget的组件,即它不会从空的gameObject触发,它也需要是Canvas的子项。
如果你从新场景开始并从GameObject菜单创建任何UI元素,Unity将创建一个Event System,Canvas和InputModule组件,这是一个很好的开始 - 如果你可以点击按钮,你应该得到你的调试您使用脚本单击图像 - 您的代码是正确的。
对于使用事件系统的精灵,你需要一个物理raycaster和对撞机。 3D Box对撞机可与Physics Raycaster配合使用,2D Box Collider可与Physics2D Raycaster配合使用,但如果没有对撞机,您的精灵不会拦截光线投射,它们需要碰撞器才能工作