A lightweight ScriptableObject-based event system for Unity.
This project demonstrates a simple and decoupled event-driven architecture that allows different GameObjects to communicate without direct references.
The goal of this project is to showcase a clean and modular Unity event system suitable for small and mid-size gameplay systems.
- ScriptableObject Event Channels
- Decoupled communication between systems
- Multiple listeners per event
- Custom Inspector for debugging
- Modular responder examples
- Clean project structure
- Demo scene included
The system follows a simple event flow:
Invoker ↓ EventChannel (ScriptableObject) ↓ Listeners ↓ Responses
Objects do not directly reference each other.
Instead, they communicate through event channels.
VoidEventChannelSO
ScriptableObject that broadcasts events to registered listeners.
Responsibilities:
- Register listeners
- Unregister listeners
- Raise events
VoidEventListener
Subscribes to an Event Channel and invokes UnityEvents when the event is raised.
Responsibilities:
- Subscribe on enable
- Unsubscribe on disable
- Execute responses
VoidEventInvoker
Raises an event on a specific Event Channel.
Typically triggered by UI buttons or gameplay systems.
These components demonstrate how listeners can react to events.
Prints a message to the Console.
Toggles the active state of a GameObject.
Sets a GameObject active or inactive.
The demo scene contains three event flows:
Button → Event → DebugLogResponder
Button → Event → ToggleCubeResponder → Cube toggles visibility
Button → Event → SetActiveResponder → UI Panel appears
Assets/_Project │ ├── Scripts │ ├── Runtime │ │ ├── Events │ │ ├── Listeners │ │ └── Examples │ │ │ └── Editor │ └── ScriptableObjects
This repository was created as a portfolio project to demonstrate:
- Unity architecture skills
- clean and modular code
- event-driven design
- ScriptableObject-based systems
Possible extensions:
- Generic Event Channels
- Typed Events (int, float, bool, Vector3)
- Debug tooling
- Event history tracking
Created by Bora Cingöz
Unity Developer