Explicación detallada de los componentes del botón Button de la serie Unity3D-UGUI

Botón Introducción al componente de botón
El botón es un componente de interfaz de usuario interactivo en UGUI.
También es un componente que se encuentra a menudo en el desarrollo.
Haga clic para completar una serie de operaciones: realizar ciertos eventos, acciones, cambiar de estado, etc.

Haga clic en "Crear→IU→Botón" en la vista de jerarquía de Unity para crear un componente de botón:


3. Propiedades del componente Button
El panel de propiedades de Button se muestra en la siguiente figura:

Hablemos sobre el componente Imagen en detalle en la siguiente sección, centrándonos en el componente Botón.

El botón tiene tres tipos de transición de configuración de transición, que presentaremos respectivamente:

Color Tint - transición de color


Atributos Introducir
Interactuable Activar o no la respuesta del botón
Transición El tipo de animación de transición del botón, incluida la transición de color de tinte de color, la transición de imagen de intercambio de Sprite, la transición de animación de animación Gráfico de destino Gráfico de
destino Color
normal El color en el estado normal
Color resaltado El color en el estado cuando el mouse está flotando
Color presionado El color del estado en el que se hizo clic
Color deshabilitado El color del estado deshabilitado
Multiplicador de color Multiplicador de color
Duración del desvanecimiento El tiempo en que desaparece el efecto
Navegación Tipo de navegación
Al hacer clic Haga clic en el
tipo de transición de color de la lista de eventos, ajustando el color cambiar para mostrar la selección de botones, hacer clic, eliminar, etc. diferentes efectos.

Sprite Swap - transición de imagen

Atributos Introducir
Interactuable Ya sea para iniciar la respuesta del botón
Transición El tipo de animación de transición del botón, incluida la transición de color de tinte de color, la transición de imagen de intercambio de Sprite, la transición de animación de animación Gráfico de destino Gráfico de destino
Imagen
de Sprite resaltada en el estado de desplazamiento del mouse
Imagen de Sprite presionada en el clic estado
Deshabilitado Sprite Deshabilitado
Navegación de imagen Tipo de navegación
OnClick Click Lista de eventos
Tipo de transición de imagen, arrastrando diferentes imágenes para mostrar diferentes efectos como selección de botón, clic y eliminación.

Animación - transición de animación

Atributos Introducir
Interactuable Activar o no la respuesta del botón
Transición El tipo de animación de transición del botón, incluido Color Matiz, transición de color, cambio de imagen, transición de animación, animación de transición Gráfico de destino Gráfico de destino Activador normal Activador de estado normal Activador
resaltado
Activador
de estado de desplazamiento del ratón
Activador pulsado Clic Activador de estado Activador
desactivado Desactivar activador de estado
Generar animación automáticamente Generar animación automáticamente, hacer clic para generar automáticamente Animación de botón
Tipo de navegación de navegación
OnClick haga clic en lista de eventos
tipo de transición de animación, configurando diferentes estados de activación para mostrar la selección de botón, hacer clic, alejarse y otros efectos diferentes.


4. Evento de vinculación del componente Botón
4-1 Creación visual y vinculación de eventos
Haga clic en el signo + de OnClick en el componente Botón

Luego asigne el objeto del script enlazado al componente Button

4-2 Vincule eventos vinculando directamente scripts Use el código del método onClick.AddListener
que viene con el componente Button

utilizando UnityEngine;
utilizando UnityEngine.UI;

Prueba de botón de clase pública: MonoBehaviour
{     Botón público m_Button;     Texto público m_Text;     void Start()     {         m_Button.onClick.AddListener(ButtonOnClickEvent);     }     public void ButtonOnClickEvent()     {         m_Text.text = "鼠标点击";     } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.




























4-3. Vincule el código de evento monitoreando el objeto en el que se hizo clic a través del rayo

usando System.Collections.Generic;
utilizando UnityEngine;
utilizando UnityEngine.EventSystems;
utilizando UnityEngine.UI;

Prueba de botón de clase pública: MonoBehaviour
{     texto público m_Text;

    void Update()
    {         if (Input.GetMouseButtonDown(0))         {             if (OnePointColliderObject() != null)             {                 if (OnePointColliderObject().name == "Button" || OnePointColliderObject().name == "Text")                 {                     ButtonOnClickEvent();                 }             }     }         }










    //Haga clic en el objeto para obtener el nombre del objeto
    public GameObject OnePointColliderObject()
    {         //El objeto         PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);         //La posición actual del puntero         eventDataCurrentPosition.position = new Vector2(Input. mousePosition .x, Input.mousePosition.y);         //Datos de retroalimentación después del impacto del rayo         List<RaycastResult> resultados = new List<RaycastResult>();         //Emite un rayo y devuelve todas las colisiones         EventSystem.current.RaycastAll(eventDataCurrentPosition, resultados) ;         // Devuelve el objeto en el que se hizo clic         si (resultados.Cuenta > 0)             devuelve resultados[0].gameObject;         de lo contrario,             devuelve nulo;     }













    public void ButtonOnClickEvent()
    {         m_Text.text = "Clic del mouse"; }     } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42 _ .













































43.
44.
45.
46.


4-4 Realice el evento de clic de botón a través de EventTrigger

Escribir código

utilizando UnityEngine;
utilizando UnityEngine.EventSystems;
utilizando UnityEngine.UI;

[RequireComponent(typeof(EventTrigger))]
public class ButtonTest : MonoBehaviour
{     public Text m_Text;

    void Start()
    {         Botón btn = transform.GetComponent<Button>();         Desencadenador de EventTrigger = btn.gameObject.GetComponent<EventTrigger>();         EventTrigger.Entry entrada = new EventTrigger.Entry         {             // 鼠标点击事件             eventID = EventTriggerType.PointerClick,             // 鼠标进入事件 entrada.eventID = EventTriggerType.PointerEnter;             // 鼠标滑出事件 entrada.eventID = EventTriggerType.PointerExit;             devolución de llamada = new EventTrigger.TriggerEvent()         };         entrada.devolución de llamada.AddListener(ButtonOnClickEvent);         // entrada.devolución de llamada.AddListener (OnMouseEnter);         trigger.triggers.Add(entrada);













    }

    public void ButtonOnClickEvent(BaseEventData pointData)
    { m_Text.text         = "Clic del mouse"; }     } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31 .



































4-5 Manejar el evento de respuesta de botón UIEventListener.cs a través de la clase general UIEventListener

utilizando UnityEngine;
utilizando UnityEngine.EventSystems;

public class UIEventListener : MonoBehaviour, IPointerClickHandler
{     // definir evento proxy     público delegado void UIEventProxy();     // evento de clic del mouse     public event UIEventProxy OnClick;



    public void OnPointerClick(PointerEventData eventData)
    {         if (OnClick != null)             OnClick();     } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ButtonTest.cs




















utilizando UnityEngine;
utilizando UnityEngine.EventSystems;
utilizando UnityEngine.UI;

[RequireComponent(typeof(EventTrigger))]
public class ButtonTest : MonoBehaviour
{     public Text m_Text;

    void Start()
    {         Botón btn = this.GetComponent<Button>();         UIEventListener btnListener = btn.gameObject.AddComponent<UIEventListener>();

        btnListener.OnClick += delegado () {             ButtonOnClickEvent();         };     }


    public void ButtonOnClickEvent()
    {         m_Text.text = "Clic del mouse"; }     } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17 18. 19. 20. 21. 22. 23. 24 .



























5. Análisis de problemas comunes de los componentes del botón
5-1 Hacer clic en el botón no tiene ningún efecto
No importa cómo haga clic en el botón, no tiene ningún efecto:

Esto puede deberse a razones jerárquicas, otra interfaz de usuario bloquea el botón:

Puede ver que el cuadro de texto bloquea el botón y el cuadro de texto no bloquea el botón, o el botón se ajusta hacia abajo para resolver el problema:

5-2 El clic del botón no responde
Esta pregunta es muy similar a la primera pregunta, pero hay una diferencia, esta es que el clic tiene un efecto, pero no responde:

Es probable que este problema que no responde se deba a que el tiempo de registro del código no se ha ejecutado. Primero verifique si OnClick en el botón está vinculado al evento (si corresponde):

Luego verifique si el código tiene el botón y luego ejecute el código:

Después de iniciar sesión, copie 
usando UnityEngine,
usando UnityEngine.UI;

Prueba de botón de clase pública: MonoBehaviour
{     Botón público m_Button;     Texto público m_Text;     void Start()     {         m_Button.onClick.AddListener(ButtonOnClickEvent);     }     public void ButtonOnClickEvent()     {         m_Text.text = "鼠标点击";     } }











 

Supongo que te gusta

Origin blog.csdn.net/qq_21743659/article/details/128897614
Recomendado
Clasificación