Buen diaHoy me gustaría hablar brevemente sobre el uso de eventos para deshacerse de la basura y proporcionar una funcionalidad compleja y dinámica al código. Cabe señalar que este artículo se centra más en los principiantes que desean aprender más sobre los sistemas de eventos.
Analizaremos todo este asunto utilizando el ejemplo de un sistema de control de sonido. Este sistema nos permitirá habilitar / deshabilitar música y sonidos en la configuración del juego.
Antes de crear una clase de administrador que gestionará la configuración de sonido y música, crearemos una clase simple serializable. Se utilizará como modelo de datos para guardar en JSON.
using System.Collections; using System.Collections.Generic; using UnityEngine;
Ahora puede comenzar a escribir la clase de administrador. Lo instalaremos en la primera escena. Este administrador será un objeto global y no se eliminará al pasar de una escena a otra.
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO;
Ahora que el administrador está listo, puede crear un objeto vacío en su escena inicial y nombrarlo, por ejemplo,
"_AUDIO_MANAGER" , y luego agregarle nuestra clase de administrador. Puede hacerlo simplemente llamando al menú Agregar componente en el objeto y seleccionando
"Game Managers" => "Audio Manager" .
Después de eso, necesitamos escribir un componente que acoplaremos a cada objeto con AudioSource.
using System.Collections; using System.Collections.Generic; using UnityEngine;
De esta manera podemos controlar los sonidos / música en el juego. Este ejemplo no dice de ninguna manera cómo hacerlo correctamente, sino que solo muestra el funcionamiento del sistema de eventos y los oyentes en Unity3D.
Y finalmente, quiero hablar sobre lo que acabamos de usar. En el siguiente ejemplo, se declaró el delegado desde el que se creó el oyente:
public delegate void AudioSettingsChanged(); public event AudioSettingsChanged OnAudioSettingsChanged;
Puede establecer el rendimiento del oyente bajo ciertas condiciones y aferrarse a ellos ciertos métodos que se realizarán cuando se cumplan estas condiciones.
Y con la ayuda de delegados, sobre la base de los cuales creamos un oyente, puede crear funciones de devolución de llamada. Esto puede ser especialmente útil para métodos asincrónicos (por ejemplo, al enviar solicitudes POST asincrónicas).
Espero que encuentre útil mi pequeña experiencia en este asunto y pueda aplicar este ejemplo a sus proyectos. También me complacerá responder sus preguntas (si alguien no comprende algo).