https://github.com/paulnonatomic/messageservice
A simple Unity C# messaging system
https://github.com/paulnonatomic/messageservice
Last synced: 5 months ago
JSON representation
A simple Unity C# messaging system
- Host: GitHub
- URL: https://github.com/paulnonatomic/messageservice
- Owner: PaulNonatomic
- License: mit
- Created: 2024-02-11T23:21:09.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-06T18:34:22.000Z (5 months ago)
- Last Synced: 2025-02-06T19:35:32.044Z (5 months ago)
- Language: C#
- Homepage:
- Size: 33.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# MessageService
## Overview
MessageService is a simple message passing system for decoupling components in a Unity application. It provides a mechanism for subscribing to messages of a specific type and publishing messages to all interested subscribers.## Installation
To install MessageService in your Unity project, add the package from the git URL: `https://github.com/PaulNonatomic/MessageService.git` using the Unity package manager.## Features
- **Subscribe to Messages**: Listen for specific message types.
- **Unsubscribe from Messages**: Stop listening for specific message types.
- **Publish Messages**: Send messages to all subscribers of that message type.
- **Automatically unsubscribe**: After receiving a message once with SubscribeOnce feature## Usage
### Creating Messages
Messages can be any type, struct or class, depending on your needs.
**Structs** are often preferred because they are value types, can be more efficient in some scenarios, and have well-defined copy semantics.
**Classes** might be a better choice if your message needs reference semantics, inheritance, or more complex structures.```csharp
public struct MyMessage
{
public string Content;
}
```### Subscribing to a Message
To subscribe to a message type, use the `Subscribe` method where `T` is your message type:```csharp
_messageService.Subscribe(HandleMyMessage);private void HandleMyMessage(MyMessage message)
{
// Handle the message
}
```### Unsubscribing from a Message
To unsubscribe, use the Unsubscribe method:```csharp
_messageService.Unsubscribe(HandleMyMessage);
```### Publishing a Message
To publish a message, use the Publish method:```csharp
_messageService.Publish(new MyMessage { Content = "Hello, world!" });
```Optionally pass a publisher object to the Publish method for debugging purposes and potential future tooling:
```csharp
_messageService.Publish(new MyMessage { Content = "Hello, world!" }, publisher: this);
```### Subscribe Once
Messages can be subscribed to be received only once using SubscribeOnce. After the message is received for the first time, the handler is automatically unsubscribed.```csharp
_messageService.SubscribeOnce(HandleMyMessage);
```
## Contributing
Contributions to MessageService are welcome! Please refer to CONTRIBUTING.md for guidelines on contributing to the project.## License
MessageService is licensed under the MIT license. See LICENSE for more details.