mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 19:10:32 +00:00
31b07ae02f
* breaking: no need to override Serialize/Deserialize in messages Messages no longer serilize themselves. This has been decoupled. Serializing a message is now done via readers and writers, which can be either generated or user provided. This lifts some restrictions, * you no longer need to have a default constructor in messages * Messages types can be recursive * struct Messages don't need to provide an empty Serialize and Deserialize method Before: ```cs public struct ReadyMessage : IMessageBase { public void Deserialize(NetworkReader reader) { } public void Serialize(NetworkWriter writer) { } } ``` After: ```cs public struct ReadyMessage : IMessageBase { } ``` BREAKING CHANGE: Messages must be public BREAKING CHANGE: Use custom reader and writer instead of Serialize/Deserialize methods * Remove unused method * remove unused methods * remove unused methods * make all messages struct * Fix test code generator * Get rid of MessageBase * Rename IMessageBase -> NetworkMessage * add MessageBase as obsolete * Use a default request * Empty file to make asset store happy * Apply suggestions from code review Co-authored-by: James Frowen <jamesfrowendev@gmail.com> Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
21 lines
453 B
Markdown
21 lines
453 B
Markdown
# Best Practices
|
|
|
|
> work in progress
|
|
|
|
|
|
## Custom Messages
|
|
|
|
If you send custom message regularly then the message should be a struct so that there is no GC/allocations
|
|
|
|
```cs
|
|
struct CreateVisualEffect : NetworkMessage
|
|
{
|
|
public Vector3 position;
|
|
public Guid prefabId;
|
|
|
|
// Mirror will automatically implement message that are empty
|
|
public void Deserialize(NetworkReader reader) { }
|
|
public void Serialize(NetworkWriter writer) { }
|
|
}
|
|
```
|