-
Notifications
You must be signed in to change notification settings - Fork 0
Home
title: Home description: Decoupled, simple systems for Unity template: home.html hide:
- navigation
- toc
- Getting-Started-Quick-Start - Define, register, and emit your first message.
- Concepts-Mental-Model - Choose between untargeted, targeted, and broadcast messages.
- Guides-Inspector-Overlay - Use diagnostics and base-call warnings inside Unity.
- Guides-Diagnostics - Inspect emissions, trace paths, and registration topology.
- Architecture-Performance - Read the current published benchmark tables.
openupm add com.wallstop-studios.dxmessaginghttps://github.com/Ambiguous-Interactive/DxMessaging.git
See the Getting-Started-Install for scoped registry, Git URL, and local tarball options.
using DxMessaging.Core.Attributes;
using DxMessaging.Core.Extensions;
using DxMessaging.Unity;
using UnityEngine;
[DxTargetedMessage]
[DxAutoConstructor]
public readonly partial struct Heal
{
public readonly int Amount;
}
public sealed class PlayerHealth : MessageAwareComponent
{
protected override void RegisterMessageHandlers()
{
base.RegisterMessageHandlers();
Token.RegisterGameObjectTargeted<Heal>(gameObject, OnHeal);
}
private void OnHeal(ref Heal message)
{
// Apply the heal to this player.
}
}
public sealed class HealButton : MonoBehaviour
{
[SerializeField]
private GameObject _player;
public void Click()
{
Heal heal = new Heal(25);
heal.EmitGameObjectTargeted(_player);
}
}Three message shapes - untargeted, targeted, broadcast - and nothing else to learn. Each contract is an explicit typed struct, and no system holds a reference to any other.
Define a struct, register a handler, emit. Registration tokens follow their owner's lifecycle, so handlers remove themselves - no manual unsubscribe, no leaked listeners.
The same simple primitives decouple entire systems. Wiring a feature in is one registration; removing it is deleting that line. Interceptors, handler priorities, and global observers layer on without touching existing code.
Struct messages and by-ref handlers keep steady-state dispatch at zero allocation. Type-indexed routing stays O(1), with published results around 10 ns per handler.
- New to the package: Getting-Started
- Choosing message types: Concepts-Message-Types
- Unity integration patterns: Guides-Unity-Integration
- Debugging message flow: Guides-Diagnostics
- API details: Reference-Reference
- Getting-Started-Overview
- Getting-Started-Getting-Started
- Getting-Started-Install
- Getting-Started-Quick-Start
- Getting-Started-Visual-Guide
- Concepts-Message-Types
- Concepts-Listening-Patterns
- Concepts-Targeting-And-Context
- Concepts-Interceptors-And-Ordering
- Guides-Patterns
- Guides-Unity-Integration
- Guides-Testing
- Guides-Diagnostics
- Guides-Advanced
- Guides-Migration-Guide
- Advanced-Emit-Shorthands
- Advanced-Message-Bus-Providers
- Advanced-Runtime-Configuration
- Advanced-String-Messages
- Reference-Reference
- Reference-Quick-Reference
- Reference-Helpers
- Reference-Faq
- Reference-Glossary
- Reference-Troubleshooting
- Reference-Compatibility
Links