Importa el paquete
Importa Game Events Toolkit desde el Asset Store. Espera a que Unity termine de compilar.
Un sistema de eventos profesional basado en ScriptableObjects. 8 tipos de evento, listeners configurables desde el Inspector, herramientas de editor y cero dependencias externas.
PRIMEROS PASOS
Importa Game Events Toolkit desde el Asset Store. Espera a que Unity termine de compilar.
Ve a Tools → Game Events Toolkit → Setup Demo Scene y pulsa "Create Demo".
Muévete con WASD, acércate a los ítems para recogerlos, usa los botones de la UI para probar los eventos.
CONCEPTO
El patrón es simple: un ScriptableObject actúa como canal de eventos. Cualquier script puede emitir a ese canal, y cualquier listener puede escucharlo, sin que se conozcan entre sí.
Cualquier MonoBehaviour con una referencia al evento. Llama a Raise() o Raise(value).
Un ScriptableObject que almacena la lista de oyentes y los notifica al ser emitido.
Un componente que se registra en OnEnable y dispara un UnityEvent como respuesta.
EVENTOS
Los eventos son assets de ScriptableObject. Créalos desde el menú del proyecto y reutilízalos en cualquier escena.
Señal sin datos.
true / false
Número entero
Número decimal
Cadena de texto
Posición / dirección 2D
Posición / dirección 3D
Referencia a objeto
EMISIÓN
Añade una referencia [SerializeField] al evento en tu script, asígnala en el Inspector y llama a Raise().
using UnityEngine;
using GameEventsToolkit;
public class PlayerDeath : MonoBehaviour
{
[SerializeField] private VoidGameEvent playerDiedEvent;
public void Die()
{
playerDiedEvent.Raise();
}
}
using UnityEngine;
using GameEventsToolkit;
public class HealthSystem : MonoBehaviour
{
[SerializeField] private FloatGameEvent healthChangedEvent;
private float health = 100f;
public void TakeDamage(float amount)
{
health = Mathf.Max(0f, health - amount);
healthChangedEvent.Raise(health);
}
}
RESPUESTAS
Los listeners son componentes que escuchan un evento y disparan respuestas UnityEvent. No necesitas escribir código.
Add Component → Game Events Toolkit → [Tipo] Game Event Listener
Arrastra el ScriptableObject al campo Game Event.
Añade entradas al Response (UnityEvent) como lo harías con un botón.
Game Events Toolkit → Void Game Event Listener
Game Events Toolkit → Float Game Event Listener
Game Events Toolkit → String Game Event Listener
Game Events Toolkit → Bool Game Event Listener
REFERENCIA
Referencia rápida de todos los tipos incluidos.
HERRAMIENTAS
Cada evento ScriptableObject muestra información extendida en el Inspector durante Play Mode.
MONITORIZACIÓN
Una ventana del editor que muestra todos los eventos activos en la escena con información en tiempo real.
DESARROLLO
string DescriptionDescripción del evento (solo lectura).
string TypeNameNombre del tipo ("Void", "Float"…).
int ListenerCountNúmero de listeners registrados.
void Raise()Emite el evento a todos los listeners registrados.
void RegisterListener(IGameEventListener)Registra un listener void.
void UnregisterListener(IGameEventListener)Desregistra un listener void.
void Raise(T value)Emite el evento con un valor tipado.
void RegisterListener(IGameEventListener<T>)Registra un listener tipado.
void UnregisterListener(IGameEventListener<T>)Desregistra un listener tipado.
IGameEventListenerInterfaz para listeners void. Método: OnEventRaised()
IGameEventListener<T>Interfaz para listeners tipados. Método: OnEventRaised(T value)
EXTENSIÓN
Crear un tipo de evento personalizado requiere solo 2 clases de una línea.
using UnityEngine;
using GameEventsToolkit;
[CreateAssetMenu(menuName = "Game Events Toolkit/Events/Color Event")]
public class ColorGameEvent : GameEvent<Color>
{
public override string TypeName => "Color";
}
using GameEventsToolkit;
using UnityEngine;
public class ColorGameEventListener
: BaseGameEventListener<ColorGameEvent, Color> { }
GUÍA
PROYECTO
El asset está organizado con Assembly Definitions para separar runtime y editor.
Assembly Definition del runtime. Auto-referenciado, sin dependencias externas.
Assembly Definition del editor. Referencia al runtime, plataforma solo Editor.
SOPORTE
Verifica que el campo Game Event del listener tenga asignado el mismo ScriptableObject que usa el emisor. Comprueba que el GameObject del listener esté activo y que el componente listener esté habilitado.
La información runtime solo aparece durante Play Mode. Selecciona el asset del evento en el Project y entra en Play Mode.
El debugger muestra eventos que existen como assets en el proyecto. Si no aparecen, asegúrate de que los ScriptableObjects están creados y no ocultos por HideFlags.
Añade using GameEventsToolkit; en la parte superior de tu script. Si usas Assembly Definitions propios, añade una referencia a GameEventsToolkit.Runtime.
Los campos de debug usan [NonSerialized] y se reinician automáticamente con el domain reload. Si tienes "Enter Play Mode Settings" sin domain reload, los contadores pueden persistir — pulsa Reset en el debugger.
Sí. Hereda de GameEvent<T> para el evento y de BaseGameEventListener<TEvent, TValue> para el listener. Consulta la sección Extender el sistema.