SyncTypes
Like remote procedure calls, SyncTypes are another type of communication. These are fields which automatically synchronize over the network to clients when the server changes them. There are a variety of SyncTypes available: SyncVar, SyncDictionary, SyncList, custom SyncTypes, and more.
When changes are made to a SyncType, only the changes are sent. For example, if you have a SyncList of 10 values and add another, only the just added entry will be sent.
SyncTypes will also automatically generate serializers for custom types.
Any changes made to SyncTypes in Awake will be performed on server and client without requiring synchronization. This is a great opportunity to add to lists or dictionaries. If you wish values to be synchronized after initializing use OnStartServer.
Setting a SendRate of 0f will allow SyncTypes to send changes every network tick.
ClientHost Limitations
There is a small limitation with all SyncTypes when running both the client and server in a single build.
While as clientHost, the previous value, when applicable, in callbacks will be the current value if the asServer parameter is false. This is mostly noticed in SyncVars, note the example below.
There is a fairly simple way to accommodate this scenario if you plan on using clientHost in your game.
Last updated