Class NetworkManager
The main component of the library
Inherited Members
Namespace: Unity.Netcode
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 |
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<UInt64, PendingClient> |
RunInBackground
Gets or sets if the application should be set to run in background
Declaration
[HideInInspector]
public bool RunInBackground
Field Value
Type | Description |
---|---|
Boolean |
ServerClientId
The client id used to represent the server
Declaration
public const ulong ServerClientId = 0UL
Field Value
Type | Description |
---|---|
UInt64 |
Properties
ConnectedClients
Gets a dictionary of connected clients and their clientId keys. This is only accessible on the server.
Declaration
public IReadOnlyDictionary<ulong, NetworkClient> ConnectedClients { get; }
Property Value
Type | Description |
---|---|
IReadOnlyDictionary<UInt64, NetworkClient> |
ConnectedClientsIds
Gets a list of just the IDs of all connected clients. This is only accessible on the server.
Declaration
public IReadOnlyList<ulong> ConnectedClientsIds { get; }
Property Value
Type | Description |
---|---|
IReadOnlyList<UInt64> |
ConnectedClientsList
Gets a list of connected clients. This is only accessible on the server.
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> |
CustomMessagingManager
Gets the CustomMessagingManager for this NetworkManager
Declaration
public CustomMessagingManager CustomMessagingManager { get; }
Property Value
Type | Description |
---|---|
CustomMessagingManager |
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 |
IsApproved
Is true when the client has been approved.
Declaration
public bool IsApproved { get; }
Property Value
Type | Description |
---|---|
Boolean |
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
IsClient
Gets Whether or not a client is running
Declaration
public bool IsClient { get; }
Property Value
Type | Description |
---|---|
Boolean |
IsConnectedClient
When true, the client is connected, approved, and synchronized with
the server.
Unity.Netcode.NetworkClient.IsConnected
Unity.Netcode.NetworkClient.IsApproved
Declaration
public bool IsConnectedClient { get; }
Property Value
Type | Description |
---|---|
Boolean |
IsHost
Gets if we are running as host
Declaration
public bool IsHost { get; }
Property Value
Type | Description |
---|---|
Boolean |
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 |
---|---|
Boolean |
IsServer
Gets Whether or not a server is running
Declaration
public bool IsServer { get; }
Property Value
Type | Description |
---|---|
Boolean |
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 |
---|---|
UInt64 |
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 |
---|---|
Int32 |
MaximumTransmissionUnitSize
Sets the maximum size of a single non-fragmented message (or message batch) passed through the transport. This should represent the transport's MTU size, minus any transport-level overhead.
Declaration
public int MaximumTransmissionUnitSize { get; set; }
Property Value
Type | Description |
---|---|
Int32 |
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 |
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 |
---|---|
Boolean |
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(UInt64)
Disconnects the remote client.
Declaration
public void DisconnectClient(ulong clientId)
Parameters
Type | Name | Description |
---|---|---|
UInt64 | clientId | The ClientId to disconnect |
DisconnectClient(UInt64, String)
Disconnects the remote client.
Declaration
public void DisconnectClient(ulong clientId, string reason = null)
Parameters
Type | Name | Description |
---|---|---|
UInt64 | 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 |
NetworkUpdate(NetworkUpdateStage)
Declaration
public void NetworkUpdate(NetworkUpdateStage updateStage)
Parameters
Type | Name | Description |
---|---|---|
NetworkUpdateStage | updateStage |
Implements
RemoveNetworkPrefab(GameObject)
Declaration
public void RemoveNetworkPrefab(GameObject prefab)
Parameters
Type | Name | Description |
---|---|---|
GameObject | prefab |
SetSingleton()
Set this NetworkManager instance as the static NetworkManager singleton
Declaration
public void SetSingleton()
Shutdown(Boolean)
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 |
---|---|---|
Boolean | 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 |
---|---|
Boolean | ( |
StartHost()
Starts a Host
Declaration
public bool StartHost()
Returns
Type | Description |
---|---|
Boolean | ( |
StartServer()
Starts a server
Declaration
public bool StartServer()
Returns
Type | Description |
---|---|
Boolean | ( |
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.
Declaration
public event Action<ulong> OnClientConnectedCallback
Event Type
Type | Description |
---|---|
Action<UInt64> |
OnClientDisconnectCallback
The callback to invoke when a client disconnects. This callback is only ran on the server and on the local client that disconnects.
Declaration
public event Action<ulong> OnClientDisconnectCallback
Event Type
Type | Description |
---|---|
Action<UInt64> |
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<Boolean> |
Remarks
The parameter states whether the client was running in host mode
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<Boolean> |
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.