mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 11:00: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>
453 B
453 B
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
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) { }
}