Class NetworkManager
The main component of the library
Implements
Inherited Members
Namespace: Unity.Netcode
Assembly: Unity.Netcode.Runtime.dll
Syntax
[AddComponentMenu("Netcode/Network Manager", -100)]
public class NetworkManager : MonoBehaviour, INetworkUpdateSystem
Fields
LogLevel
The log level to use
Declaration
[HideInInspector]
public LogLevel LogLevel
Field Value
Type | Description |
---|---|
LogLevel |
NetworkConfig
The current netcode project configuration
Declaration
[HideInInspector]
public NetworkConfig NetworkConfig
Field Value
Type | Description |
---|---|
NetworkConfig |
NetworkManagerExpanded
Declaration
[HideInInspector]
public bool NetworkManagerExpanded
Field Value
Type | Description |
---|---|
bool |
OnFetchLocalPlayerPrefabToSpawn
Distributed Authority Mode When a callback is assigned, this provides control over what player prefab a client will be using. This is invoked only when AutoSpawnPlayerPrefabClientSide is enabled.
Declaration
public NetworkManager.OnFetchLocalPlayerPrefabToSpawnDelegateHandler OnFetchLocalPlayerPrefabToSpawn
Field Value
Type | Description |
---|---|
NetworkManager.OnFetchLocalPlayerPrefabToSpawnDelegateHandler |
PendingClients
Gets a dictionary of the clients that have been accepted by the transport but are still pending by the Netcode. This is only populated on the server.
Declaration
public readonly Dictionary<ulong, PendingClient> PendingClients
Field Value
Type | Description |
---|---|
Dictionary<ulong, PendingClient> |
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
Field Value
Type | Description |
---|---|
RpcTarget |
RunInBackground
Gets or sets if the application should be set to run in background
Declaration
[HideInInspector]
public bool RunInBackground
Field Value
Type | Description |
---|---|
bool |
ServerClientId
The client id used to represent the server
Declaration
public const ulong ServerClientId = 0
Field Value
Type | Description |
---|---|
ulong |
Properties
AutoSpawnPlayerPrefabClientSide
Distributed Authority Mode When enabled, the player prefab will be automatically spawned on the newly connected client-side.
Declaration
public bool AutoSpawnPlayerPrefabClientSide { get; }
Property Value
Type | Description |
---|---|
bool |
Remarks
Refer to AutoSpawnPlayerPrefabClientSide to enable/disable automatic spawning of the player prefab. Alternately, override the FetchLocalPlayerPrefabToSpawn() to control what prefab the player should spawn.
CMBServiceConnection
Distributed Authority Mode Gets whether the NetworkManager is connected to a distributed authority state service. DAHost to determine if the instance is mocking the state service.
Declaration
public bool CMBServiceConnection { get; }
Property Value
Type | Description |
---|---|
bool |
ConnectedClients
Gets a dictionary of connected clients and their clientId keys.
Declaration
public IReadOnlyDictionary<ulong, NetworkClient> ConnectedClients { get; }
Property Value
Type | Description |
---|---|
IReadOnlyDictionary<ulong, NetworkClient> |
ConnectedClientsIds
Gets a list of just the IDs of all connected clients.
Declaration
public IReadOnlyList<ulong> ConnectedClientsIds { get; }
Property Value
Type | Description |
---|---|
IReadOnlyList<ulong> |
ConnectedClientsList
Gets a list of connected clients.
Declaration
public IReadOnlyList<NetworkClient> ConnectedClientsList { get; }
Property Value
Type | Description |
---|---|
IReadOnlyList<NetworkClient> |
ConnectedHostname
The current host name we are connected to, used to validate certificate
Declaration
public string ConnectedHostname { get; }
Property Value
Type | Description |
---|---|
string |
ConnectionApprovalCallback
The callback to invoke during connection approval. Allows client code to decide whether or not to allow incoming client connection
Declaration
public Action<NetworkManager.ConnectionApprovalRequest, NetworkManager.ConnectionApprovalResponse> ConnectionApprovalCallback { get; set; }
Property Value
Type | Description |
---|---|
Action<NetworkManager.ConnectionApprovalRequest, NetworkManager.ConnectionApprovalResponse> |
CurrentSessionOwner
Declaration
public ulong CurrentSessionOwner { get; }
Property Value
Type | Description |
---|---|
ulong |
CustomMessagingManager
Gets the CustomMessagingManager for this NetworkManager
Declaration
public CustomMessagingManager CustomMessagingManager { get; }
Property Value
Type | Description |
---|---|
CustomMessagingManager |
DAHost
Distributed Authority Mode Gets whether the current NetworkManager is running as a mock distributed authority state service (DAHost)
Declaration
public bool DAHost { get; }
Property Value
Type | Description |
---|---|
bool |
DisconnectReason
When disconnected from the server, the server may send a reason. If a reason was sent, this property will tell client code what the reason was. It should be queried after the OnClientDisconnectCallback is called
Declaration
public string DisconnectReason { get; }
Property Value
Type | Description |
---|---|
string |
DistributedAuthorityMode
Distributed Authority Mode Returns true if the current session is running in distributed authority mode.
Declaration
public bool DistributedAuthorityMode { get; }
Property Value
Type | Description |
---|---|
bool |
IsApproved
Is true when the client has been approved.
Declaration
public bool IsApproved { get; }
Property Value
Type | Description |
---|---|
bool |
Remarks
This only reflects the client's approved status and does not mean the client has finished the connection and synchronization process. The server-host will always be approved upon being starting the NetworkManager NetworkClient.IsConnectedClient
IsClient
Gets Whether or not a client is running
Declaration
public bool IsClient { get; }
Property Value
Type | Description |
---|---|
bool |
IsConnectedClient
When true, the client is connected, approved, and synchronized with
the server.
IsConnected
IsApproved
Declaration
public bool IsConnectedClient { get; }
Property Value
Type | Description |
---|---|
bool |
IsHost
Gets if we are running as host
Declaration
public bool IsHost { get; }
Property Value
Type | Description |
---|---|
bool |
IsListening
Is true when a server or host is listening for connections. Is true when a client is connecting or connected to a network session. Is false when not listening, connecting, or connected.
Declaration
public bool IsListening { get; }
Property Value
Type | Description |
---|---|
bool |
IsServer
Gets Whether or not a server is running
Declaration
public bool IsServer { get; }
Property Value
Type | Description |
---|---|
bool |
LocalClient
Gets the local NetworkClient for this client.
Declaration
public NetworkClient LocalClient { get; }
Property Value
Type | Description |
---|---|
NetworkClient |
LocalClientId
Returns ServerClientId if IsServer or LocalClientId if not
Declaration
public ulong LocalClientId { get; }
Property Value
Type | Description |
---|---|
ulong |
LocalTime
The local NetworkTime
Declaration
public NetworkTime LocalTime { get; }
Property Value
Type | Description |
---|---|
NetworkTime |
MaximumFragmentedMessageSize
Sets the maximum size of a message (or message batch) passed through the transport with the ReliableFragmented delivery. Warning: setting this value too low may result in the SDK becoming non-functional with projects that have a large number of NetworkBehaviours or NetworkVariables, as the SDK relies on the transport's ability to fragment some messages when they grow beyond the MTU size.
Declaration
public int MaximumFragmentedMessageSize { get; set; }
Property Value
Type | Description |
---|---|
int |
MaximumTransmissionUnitSize
Sets the maximum size of a single non-fragmented message (or message batch) passed through the transport. This should represent the transport's default MTU size, minus any transport-level overhead. This value will be used for any remote endpoints that haven't had per-endpoint MTUs set. This value is also used as the size of the temporary buffer used when serializing a single message (to avoid serializing multiple times when sending to multiple endpoints), and thus should be large enough to ensure it can hold each message type. This value defaults to 1296.
Declaration
public int MaximumTransmissionUnitSize { get; set; }
Property Value
Type | Description |
---|---|
int |
NetworkTickSystem
Accessor property for the NetworkTickSystem of the NetworkManager.
Declaration
public NetworkTickSystem NetworkTickSystem { get; }
Property Value
Type | Description |
---|---|
NetworkTickSystem |
NetworkTimeSystem
Accessor property for the NetworkTimeSystem of the NetworkManager. Prefer the use of the LocalTime and ServerTime properties
Declaration
public NetworkTimeSystem NetworkTimeSystem { get; }
Property Value
Type | Description |
---|---|
NetworkTimeSystem |
PrefabHandler
The NetworkPrefabHandler instance created after starting the NetworkManager
Declaration
public NetworkPrefabHandler PrefabHandler { get; }
Property Value
Type | Description |
---|---|
NetworkPrefabHandler |
SceneManager
The NetworkSceneManager instance created after starting the NetworkManager
Declaration
public NetworkSceneManager SceneManager { get; }
Property Value
Type | Description |
---|---|
NetworkSceneManager |
ServerIsHost
Gets whether or not the current server (local or remote) is a host - i.e., also a client
Declaration
public bool ServerIsHost { get; }
Property Value
Type | Description |
---|---|
bool |
ServerTime
The NetworkTime on the server
Declaration
public NetworkTime ServerTime { get; }
Property Value
Type | Description |
---|---|
NetworkTime |
ShutdownInProgress
Can be used to determine if the NetworkManager is currently shutting itself down
Declaration
public bool ShutdownInProgress { get; }
Property Value
Type | Description |
---|---|
bool |
Singleton
The singleton instance of the NetworkManager
Declaration
public static NetworkManager Singleton { get; }
Property Value
Type | Description |
---|---|
NetworkManager |
SpawnManager
Gets the SpawnManager for this NetworkManager
Declaration
public NetworkSpawnManager SpawnManager { get; }
Property Value
Type | Description |
---|---|
NetworkSpawnManager |
Methods
AddNetworkPrefab(GameObject)
Declaration
public void AddNetworkPrefab(GameObject prefab)
Parameters
Type | Name | Description |
---|---|---|
GameObject | prefab |
Exceptions
Type | Condition |
---|---|
Exception |
DisconnectClient(ulong)
Disconnects the remote client.
Declaration
public void DisconnectClient(ulong clientId)
Parameters
Type | Name | Description |
---|---|---|
ulong | clientId | The ClientId to disconnect |
DisconnectClient(ulong, string)
Disconnects the remote client.
Declaration
public void DisconnectClient(ulong clientId, string reason = null)
Parameters
Type | Name | Description |
---|---|---|
ulong | clientId | The ClientId to disconnect |
string | reason | Disconnection reason. If set, client will receive a DisconnectReasonMessage and have the reason available in the NetworkManager.DisconnectReason property |
GetNetworkPrefabOverride(GameObject)
Declaration
public GameObject GetNetworkPrefabOverride(GameObject gameObject)
Parameters
Type | Name | Description |
---|---|---|
GameObject | gameObject | the GameObject to be checked for a NetworkManager defined NetworkPrefab override |
Returns
Type | Description |
---|---|
GameObject | a GameObject that is either the override or if no overrides exist it returns the same as the one passed in as a parameter |
GetPeerMTU(ulong)
Queries the current MTU size for a client. If no MTU has been set for that client, will return MaximumTransmissionUnitSize
Declaration
public int GetPeerMTU(ulong clientId)
Parameters
Type | Name | Description |
---|---|---|
ulong | clientId |
Returns
Type | Description |
---|---|
int |
NetworkUpdate(NetworkUpdateStage)
The update method that is being executed in the context of related NetworkUpdateStage.
Declaration
public void NetworkUpdate(NetworkUpdateStage updateStage)
Parameters
Type | Name | Description |
---|---|---|
NetworkUpdateStage | updateStage | The NetworkUpdateStage that is being executed. |
OnValidateComponent()
Declaration
protected virtual void OnValidateComponent()
RemoveNetworkPrefab(GameObject)
Declaration
public void RemoveNetworkPrefab(GameObject prefab)
Parameters
Type | Name | Description |
---|---|---|
GameObject | prefab |
SetPeerMTU(ulong, int)
Set the maximum transmission unit for a specific peer. This determines the maximum size of a message batch that can be sent to that client. If not set for any given client, MaximumTransmissionUnitSize will be used instead.
Declaration
public void SetPeerMTU(ulong clientId, int size)
Parameters
Type | Name | Description |
---|---|---|
ulong | clientId | |
int | size |
SetSingleton()
Set this NetworkManager instance as the static NetworkManager singleton
Declaration
public void SetSingleton()
Shutdown(bool)
Globally shuts down the library. Disconnects clients if connected and stops server if running.
Declaration
public void Shutdown(bool discardMessageQueue = false)
Parameters
Type | Name | Description |
---|---|---|
bool | discardMessageQueue | If false, any messages that are currently in the incoming queue will be handled, and any messages in the outgoing queue will be sent, before the shutdown is processed. If true, NetworkManager will shut down immediately, and any unprocessed or unsent messages will be discarded. |
StartClient()
Starts a client
Declaration
public bool StartClient()
Returns
Type | Description |
---|---|
bool | (true/false) returns true if NetworkManager started in client mode successfully. |
StartHost()
Starts a Host
Declaration
public bool StartHost()
Returns
Type | Description |
---|---|
bool | (true/false) returns true if NetworkManager started in host mode successfully. |
StartServer()
Starts a server
Declaration
public bool StartServer()
Returns
Type | Description |
---|---|
bool | (true/false) returns true if NetworkManager started in server mode successfully. |
Events
OnClientConnectedCallback
The callback to invoke once a client connects. This callback is only ran on the server and on the local client that connects.
It is recommended to use OnConnectionEvent instead, as this will eventually be deprecated
Declaration
public event Action<ulong> OnClientConnectedCallback
Event Type
Type | Description |
---|---|
Action<ulong> |
OnClientDisconnectCallback
The callback to invoke when a client disconnects. This callback is only ran on the server and on the local client that disconnects.
It is recommended to use OnConnectionEvent instead, as this will eventually be deprecated
Declaration
public event Action<ulong> OnClientDisconnectCallback
Event Type
Type | Description |
---|---|
Action<ulong> |
OnClientStarted
The callback to invoke once the local client is ready
Declaration
public event Action OnClientStarted
Event Type
Type | Description |
---|---|
Action |
OnClientStopped
The callback to invoke once the local client stops
Declaration
public event Action<bool> OnClientStopped
Event Type
Type | Description |
---|---|
Action<bool> |
Remarks
The parameter states whether the client was running in host mode
OnConnectionEvent
The callback to invoke on any connection event. See ConnectionEvent and ConnectionEventData for more info.
Declaration
public event Action<NetworkManager, ConnectionEventData> OnConnectionEvent
Event Type
Type | Description |
---|---|
Action<NetworkManager, ConnectionEventData> |
OnReanticipate
This callback is called after all individual OnReanticipate calls on AnticipatedNetworkVariable and AnticipatedNetworkTransform values have been invoked. The first parameter is a hash set of all the variables that have been changed on this frame (you can detect a particular variable by checking if the set contains it), while the second parameter is a set of all anticipated network transforms that have been changed. Both are passed as their base class type.
The third parameter is the local time corresponding to the current authoritative server state (i.e., to determine the amount of time that needs to be re-simulated, you will use NetworkManager.LocalTime.Time - authorityTime).
Declaration
public event NetworkManager.ReanticipateDelegate OnReanticipate
Event Type
Type | Description |
---|---|
NetworkManager.ReanticipateDelegate |
OnServerStarted
This callback is invoked when the local server is started and listening for incoming connections.
Declaration
public event Action OnServerStarted
Event Type
Type | Description |
---|---|
Action |
OnServerStopped
This callback is invoked once the local server is stopped.
Declaration
public event Action<bool> OnServerStopped
Event Type
Type | Description |
---|---|
Action<bool> |
OnSessionOwnerPromoted
Network Topology: Distributed Authority When a new session owner is promoted, this event is triggered on all connected clients
Declaration
public event NetworkManager.OnSessionOwnerPromotedDelegateHandler OnSessionOwnerPromoted
Event Type
Type | Description |
---|---|
NetworkManager.OnSessionOwnerPromotedDelegateHandler |
OnTransportFailure
The callback to invoke if the NetworkTransport fails.
Declaration
public event Action OnTransportFailure
Event Type
Type | Description |
---|---|
Action |
Remarks
A failure of the transport is always followed by the NetworkManager shutting down. Recovering from a transport failure would normally entail reconfiguring the transport (e.g. re-authenticating, or recreating a new service allocation depending on the transport) and restarting the client/server/host.