Class NetworkBehaviour
The base class to override to write network code. Inherits MonoBehaviour
Inherited Members
Namespace: Unity.Netcode
Assembly: Unity.Netcode.Runtime.dll
Syntax
public abstract class NetworkBehaviour : MonoBehaviour
  Properties
HasNetworkObject
Gets whether or not this NetworkBehaviour instance has a NetworkObject owner.
Declaration
public bool HasNetworkObject { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
IsClient
Gets if we are executing as client
Declaration
public bool IsClient { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
IsHost
Gets if we are executing as Host, I.E Server and Client
Declaration
public bool IsHost { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
IsLocalPlayer
If a NetworkObject is assigned, it will return whether or not this NetworkObject is the local player object. If no NetworkObject is assigned it will always return false.
Declaration
public bool IsLocalPlayer { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
IsOwnedByServer
Gets Whether or not the object has a owner
Declaration
public bool IsOwnedByServer { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
IsOwner
Gets if the object is owned by the local player or if the object is the local player object
Declaration
public bool IsOwner { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
IsServer
Gets if we are executing as server
Declaration
public bool IsServer { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
IsSpawned
Used to determine if it is safe to access NetworkObject and NetworkManager from within a NetworkBehaviour component Primarily useful when checking NetworkObject/NetworkManager properties within FixedUpate
Declaration
public bool IsSpawned { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
NetworkBehaviourId
Gets NetworkId for this NetworkBehaviour from the owner NetworkObject
Declaration
public ushort NetworkBehaviourId { get; }
  Property Value
| Type | Description | 
|---|---|
| ushort | 
NetworkManager
Gets the NetworkManager that owns this NetworkBehaviour instance
See note around NetworkObject for how there is a chicken / egg problem when we are not initialized
Declaration
public NetworkManager NetworkManager { get; }
  Property Value
| Type | Description | 
|---|---|
| NetworkManager | 
NetworkObject
Gets the NetworkObject that owns this NetworkBehaviour instance
Declaration
public NetworkObject NetworkObject { get; }
  Property Value
| Type | Description | 
|---|---|
| NetworkObject | 
NetworkObjectId
Gets the NetworkId of the NetworkObject that owns this NetworkBehaviour
Declaration
public ulong NetworkObjectId { get; }
  Property Value
| Type | Description | 
|---|---|
| ulong | 
OwnerClientId
Gets the ClientId that owns the NetworkObject
Declaration
public ulong OwnerClientId { get; }
  Property Value
| Type | Description | 
|---|---|
| ulong | 
RpcTarget
Provides access to the various SendTo targets at runtime, as well as runtime-bound targets like Single(ulong, RpcTargetUse), Unity.Netcode.RpcTarget.Group(NativeArray<ulong>), Unity.Netcode.RpcTarget.Group(NativeList<ulong>), Unity.Netcode.RpcTarget.Group(ulong[]), Unity.Netcode.RpcTarget.Group<T>(T), Unity.Netcode.RpcTarget.Not(ulong), Unity.Netcode.RpcTarget.Not(NativeArray<ulong>), Unity.Netcode.RpcTarget.Not(NativeList<ulong>), Unity.Netcode.RpcTarget.Not(ulong[]), and Unity.Netcode.RpcTarget.Not<T>(T)
Declaration
public RpcTarget RpcTarget { get; }
  Property Value
| Type | Description | 
|---|---|
| RpcTarget | 
ServerIsHost
Gets if the server (local or remote) is a host - i.e., also a client
Declaration
public bool ServerIsHost { get; }
  Property Value
| Type | Description | 
|---|---|
| bool | 
m_TargetIdBeingSynchronized
The relative client identifier targeted for the serialization of this NetworkBehaviour instance.
Declaration
protected ulong m_TargetIdBeingSynchronized { get; }
  Property Value
| Type | Description | 
|---|---|
| ulong | 
Remarks
This value will be set prior to OnSynchronize<T>(ref BufferSerializer<T>) being invoked. For writing (server-side), this is useful to know which client will receive the serialized data. For reading (client-side), this will be the LocalClientId. When synchronization of this instance is complete, this value will be reset to 0
Methods
GetNetworkBehaviour(ushort)
Returns a the NetworkBehaviour with a given BehaviourId for the current NetworkObject
Declaration
protected NetworkBehaviour GetNetworkBehaviour(ushort behaviourId)
  Parameters
| Type | Name | Description | 
|---|---|---|
| ushort | behaviourId | The behaviourId to return  | 
      
Returns
| Type | Description | 
|---|---|
| NetworkBehaviour | Returns NetworkBehaviour with given behaviourId  | 
      
GetNetworkObject(ulong)
Gets the local instance of a object with a given NetworkId
Declaration
protected NetworkObject GetNetworkObject(ulong networkId)
  Parameters
| Type | Name | Description | 
|---|---|---|
| ulong | networkId | 
Returns
| Type | Description | 
|---|---|
| NetworkObject | 
OnDestroy()
Invoked when the GameObject the NetworkBehaviour is attached to. NOTE: If you override this, you will want to always invoke this base class version of this OnDestroy() method!!
Declaration
public virtual void OnDestroy()
  OnGainedOwnership()
Gets called when the local client gains ownership of this object
Declaration
public virtual void OnGainedOwnership()
  OnLostOwnership()
Gets called when we loose ownership of this object
Declaration
public virtual void OnLostOwnership()
  OnNetworkDespawn()
Gets called when the NetworkObject gets despawned. Is called both on the server and clients.
Declaration
public virtual void OnNetworkDespawn()
  OnNetworkObjectParentChanged(NetworkObject)
Gets called when the parent NetworkObject of this NetworkBehaviour's NetworkObject has changed
Declaration
public virtual void OnNetworkObjectParentChanged(NetworkObject parentNetworkObject)
  Parameters
| Type | Name | Description | 
|---|---|---|
| NetworkObject | parentNetworkObject | the new NetworkObject parent  | 
      
OnNetworkSpawn()
Gets called when the NetworkObject gets spawned, message handlers are ready to be registered and the network is setup.
Declaration
public virtual void OnNetworkSpawn()
  OnOwnershipChanged(ulong, ulong)
Invoked on all clients, override this method to be notified of any ownership changes (even if the instance was niether the previous or newly assigned current owner).
Declaration
protected virtual void OnOwnershipChanged(ulong previous, ulong current)
  Parameters
| Type | Name | Description | 
|---|---|---|
| ulong | previous | the previous owner  | 
      
| ulong | current | the current owner  | 
      
OnReanticipate(double)
Declaration
public virtual void OnReanticipate(double lastRoundTripTime)
  Parameters
| Type | Name | Description | 
|---|---|---|
| double | lastRoundTripTime | 
OnSynchronize<T>(ref BufferSerializer<T>)
Override this method if your derived NetworkBehaviour requires custom synchronization data. Note: Use of this method is only for the initial client synchronization of NetworkBehaviours and will increase the payload size for client synchronization and dynamically spawned NetworkObjects.
Declaration
protected virtual void OnSynchronize<T>(ref BufferSerializer<T> serializer) where T : IReaderWriter
  Parameters
| Type | Name | Description | 
|---|---|---|
| BufferSerializer<T> | serializer | The serializer to use to read and write the data.  | 
      
Type Parameters
| Name | Description | 
|---|---|
| T | Either BufferSerializerReader or BufferSerializerWriter, depending whether the serializer is in read mode or write mode.  | 
      
Remarks
When serializing (writing) this will be invoked during the client synchronization period and when spawning new NetworkObjects. When deserializing (reading), this will be invoked prior to the NetworkBehaviour's associated NetworkObject being spawned.