Introducción y uso del componente Physics2DRaycaster (detección de rayos físicos 2D) de Unity UGUI

Introducción y uso del componente Physics2DRaycaster (detección de rayos físicos 2D) de Unity UGUI

1. ¿Qué es el componente Physics2DRaycaster?

Physics2DRaycaster es un componente UGUI en Unity para la detección de rayos físicos en escenas 2D. Puede detectar la colisión de eventos táctiles o del mouse en elementos de la interfaz de usuario y pasar los eventos a los elementos de la interfaz de usuario correspondientes.

2. El principio de funcionamiento de Physics2DRaycaster

Physics2DRaycaster detecta colisiones de elementos de la interfaz de usuario emitiendo un rayo. Cuando un rayo se cruza con un elemento de la interfaz de usuario, Physics2DRaycaster pasará el evento al elemento de la interfaz de usuario correspondiente, lo que le permitirá responder a la entrada del usuario.

3. Atributos comunes de Physics2DRaycaster

1. Máscara de evento

La propiedad Máscara de evento se usa para especificar qué capas de elementos de la interfaz de usuario pueden recibir eventos. Solo los elementos de la interfaz de usuario en la capa seleccionada pueden recibir eventos de detección de rayos.

2. Objetos de bloqueo

La propiedad Blocking Objects se utiliza para especificar qué tipos de objetos bloquearán la detección de rayos. Puede optar por utilizar el componente Collider2D en el sistema de física 2D o utilizar la propiedad Raycast Target del elemento de la interfaz de usuario para el bloqueo.

4. Funciones comunes de Physics2DRaycaster

1. Raycast

La función Raycast se utiliza para realizar la detección de rayos. Acepta una lista de tipo RaycastResult como parámetro y almacena la información de los elementos de la interfaz de usuario detectados en la lista.

2. Ordenar

La función Ordenar se utiliza para ordenar los resultados de la detección de rayos. Se puede ordenar según la distancia, el nivel y otros atributos de los elementos de la interfaz de usuario.

5. Código de ejemplo completo

1. Detectar clics del mouse en elementos de la interfaz de usuario

using UnityEngine;
using UnityEngine.EventSystems;

public class MouseClickExample : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("Mouse clicked on UI element");
    }
}

Pasos:

  1. Cree un elemento de interfaz de usuario (por ejemplo, botón).
  2. Adjunte la secuencia de comandos MouseClickExample al elemento de la interfaz de usuario.
  3. Haga clic para ejecutar el juego, haga clic en el elemento de la interfaz de usuario y la consola mostrará "Clic con el mouse en el elemento de la interfaz de usuario".

Precauciones:

  • Asegúrese de que la propiedad Raycast Target del elemento de la interfaz de usuario esté marcada.

2. Detectar eventos táctiles

using UnityEngine;
using UnityEngine.EventSystems;

public class TouchExample : MonoBehaviour, IPointerDownHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("Touch event on UI element");
    }
}

Pasos:

  1. Cree un elemento de interfaz de usuario (por ejemplo, imagen).
  2. Adjunte la secuencia de comandos TouchExample al elemento de la interfaz de usuario.
  3. Haga clic para ejecutar el juego, toque la pantalla en el elemento de la interfaz de usuario, la consola mostrará "Evento táctil en el elemento de la interfaz de usuario".

Precauciones:

  • Asegúrese de que la propiedad Raycast Target del elemento de la interfaz de usuario esté marcada.

3. Detectar eventos de mouseover

using UnityEngine;
using UnityEngine.EventSystems;

public class MouseHoverExample : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("Mouse entered UI element");
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("Mouse exited UI element");
    }
}

Pasos:

  1. Cree un elemento de interfaz de usuario (por ejemplo, Texto).
  2. Adjunte la secuencia de comandos MouseHoverExample al elemento de la interfaz de usuario.
  3. Haga clic para ejecutar el juego, pase el mouse sobre el elemento de la interfaz de usuario, la consola mostrará "Elemento de la interfaz de usuario ingresado por el mouse". Mueva el mouse fuera del elemento de la interfaz de usuario y la consola mostrará "Elemento de la interfaz de usuario salió del mouse".

Precauciones:

  • Asegúrese de que la propiedad Raycast Target del elemento de la interfaz de usuario esté marcada.

4. Detectar evento de arrastre del mouse

using UnityEngine;
using UnityEngine.EventSystems;

public class MouseDragExample : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    public void OnBeginDrag(PointerEventData eventData)
    {
        Debug.Log("Mouse drag started on UI element");
    }

    public void OnDrag(PointerEventData eventData)
    {
        Debug.Log("Mouse dragging on UI element");
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        Debug.Log("Mouse drag ended on UI element");
    }
}

Pasos:

  1. Cree un elemento de interfaz de usuario (por ejemplo, imagen).
  2. Adjunte el script MouseDragExample al elemento de la interfaz de usuario.
  3. Haga clic para ejecutar el juego, mantenga presionado el botón izquierdo del mouse y arrastre el elemento de la interfaz de usuario, la consola mostrará "Arrastrar el mouse comenzó en el elemento de la interfaz de usuario". Durante el proceso de arrastre, la consola mostrará "Ratón arrastrando el elemento de la interfaz de usuario". Suelte el botón izquierdo del mouse y la consola mostrará "El arrastre del mouse terminó en el elemento de la interfaz de usuario".

Precauciones:

  • Asegúrese de que la propiedad Raycast Target del elemento de la interfaz de usuario esté marcada.

5. Detectar eventos de la rueda del mouse

using UnityEngine;
using UnityEngine.EventSystems;

public class MouseScrollExample : MonoBehaviour, IScrollHandler
{
    public void OnScroll(PointerEventData eventData)
    {
        float scrollDelta = eventData.scrollDelta.y;
        Debug.Log("Mouse scrolled on UI element: " + scrollDelta);
    }
}

Pasos:

  1. Cree un elemento de interfaz de usuario (por ejemplo, barra de desplazamiento).
  2. Adjunte la secuencia de comandos MouseScrollExample al elemento de la interfaz de usuario.
  3. Haga clic para ejecutar el juego, desplace la rueda del mouse, la consola mostrará "Mouse scrolled on UI element:" y mostrará el valor desplazado.

Precauciones:

  • Asegúrese de que la propiedad Raycast Target del elemento de la interfaz de usuario esté marcada.

Referencias

Supongo que te gusta

Origin blog.csdn.net/alianhome/article/details/131974643
Recomendado
Clasificación