Class NetworkTransport
The generic transport class all Netcode for GameObjects network transport implementations derive from. Use this class to add a custom transport. UnityTransport for an example of how a transport is integrated
Inherited Members
Namespace: Unity.Netcode
Assembly: Unity.Netcode.Runtime.dll
Syntax
public abstract class NetworkTransport : MonoBehaviour
Properties
DisconnectEvent
If the transport has implemented disconnection event mapping, then this will be set to the most recent disconnection event.
Declaration
public NetworkTransport.DisconnectEvents DisconnectEvent { get; }
Property Value
| Type | Description |
|---|---|
| NetworkTransport.DisconnectEvents |
DisconnectEventMessage
If the transport has implemented disconnection event mapping and disconnection event message mapping, then this will contain the transport specific message associated with the disconnect event type.
Declaration
public string DisconnectEventMessage { get; }
Property Value
| Type | Description |
|---|---|
| string |
IsSupported
Gets a value indicating whether this NetworkTransport is supported in the current runtime context This is used by multiplex adapters
Declaration
public virtual bool IsSupported { get; }
Property Value
| Type | Description |
|---|---|
| bool |
|
ServerClientId
A constant clientId that represents the server
When this value is found in methods such as Send, it should be treated as a placeholder that means "the server"
Declaration
public abstract ulong ServerClientId { get; }
Property Value
| Type | Description |
|---|---|
| ulong |
Methods
DisconnectLocalClient()
Disconnects the local client from the server
Declaration
public abstract void DisconnectLocalClient()
DisconnectRemoteClient(ulong)
Disconnects a client from the server
Declaration
public abstract void DisconnectRemoteClient(ulong clientId)
Parameters
| Type | Name | Description |
|---|---|---|
| ulong | clientId | The clientId to disconnect |
GetCurrentRtt(ulong)
Gets the round trip time for a specific client. This method is optional
Declaration
public abstract ulong GetCurrentRtt(ulong clientId)
Parameters
| Type | Name | Description |
|---|---|---|
| ulong | clientId | The clientId to get the RTT from |
Returns
| Type | Description |
|---|---|
| ulong | Returns the round trip time in milliseconds |
GetDisconnectEventMessage(DisconnectEvents)
Override this method to provide additional information about the disconnection event.
Declaration
protected virtual string GetDisconnectEventMessage(NetworkTransport.DisconnectEvents disconnectEvent)
Parameters
| Type | Name | Description |
|---|---|---|
| NetworkTransport.DisconnectEvents | disconnectEvent | The disconnect event to get from the NetworkTransport derived class. |
Returns
| Type | Description |
|---|---|
| string |
Initialize(NetworkManager)
Initializes the transport
Declaration
public abstract void Initialize(NetworkManager networkManager = null)
Parameters
| Type | Name | Description |
|---|---|---|
| NetworkManager | networkManager | optionally pass in NetworkManager |
InvokeOnTransportEvent(NetworkEvent, ulong, ArraySegment<byte>, float)
Invokes the OnTransportEvent. Invokation has to occur on the Unity thread in the Update loop.
Declaration
protected void InvokeOnTransportEvent(NetworkEvent eventType, ulong clientId, ArraySegment<byte> payload, float receiveTime)
Parameters
| Type | Name | Description |
|---|---|---|
| NetworkEvent | eventType | The event type |
| ulong | clientId | The clientId this event is for |
| ArraySegment<byte> | payload | The incoming data payload |
| float | receiveTime | The time the event was received, as reported by Time.realtimeSinceStartup. |
OnCurrentTopology()
Invoked to acquire the network topology for the current network session.
Declaration
protected virtual NetworkTopologyTypes OnCurrentTopology()
Returns
| Type | Description |
|---|---|
| NetworkTopologyTypes |
OnEarlyUpdate()
Invoked by NetworkManager at the beginning of its EarlyUpdate. For order of operations see: NetworkUpdate(NetworkUpdateStage)
Declaration
protected virtual void OnEarlyUpdate()
Remarks
Useful to handle processing any transport-layer events such as processing inbound messages or changes in connection state(s).
OnPostLateUpdate()
Invoked by NetworkManager towards the end of the PostLateUpdate. For order of operations see: NetworkUpdate(NetworkUpdateStage)
Declaration
protected virtual void OnPostLateUpdate()
Remarks
Useful to handle any end of frame transport tasks such as sending queued transport messages.
PollEvent(out ulong, out ArraySegment<byte>, out float)
Polls for incoming events, with an extra output parameter to report the precise time the event was received.
Declaration
public abstract NetworkEvent PollEvent(out ulong clientId, out ArraySegment<byte> payload, out float receiveTime)
Parameters
| Type | Name | Description |
|---|---|---|
| ulong | clientId | The clientId this event is for |
| ArraySegment<byte> | payload | The incoming data payload |
| float | receiveTime | The time the event was received, as reported by Time.realtimeSinceStartup. |
Returns
| Type | Description |
|---|---|
| NetworkEvent | Returns the event type |
Send(ulong, ArraySegment<byte>, NetworkDelivery)
Send a payload to the specified clientId, data and networkDelivery.
Declaration
public abstract void Send(ulong clientId, ArraySegment<byte> payload, NetworkDelivery networkDelivery)
Parameters
| Type | Name | Description |
|---|---|---|
| ulong | clientId | The clientId to send to |
| ArraySegment<byte> | payload | The data to send |
| NetworkDelivery | networkDelivery | The delivery type (QoS) to send data with |
SetDisconnectEvent(DisconnectEvents, string)
This should be invoked by the NetworkTransport derived class when a transport level disconnect event occurs.
It is up to the NetworkTransport derived class to create a map between the transport's disconnect events and the
pre-defined NetworkTransport.DisconnectEvents enum values.
Declaration
protected void SetDisconnectEvent(NetworkTransport.DisconnectEvents disconnectEvent, string message = null)
Parameters
| Type | Name | Description |
|---|---|---|
| NetworkTransport.DisconnectEvents | disconnectEvent | The NetworkTransport.DisconnectEvents type to set. |
| string | message | An optional message override. |
Shutdown()
Shuts down the transport
Declaration
public abstract void Shutdown()
StartClient()
Connects client to the server
Declaration
public abstract bool StartClient()
Returns
| Type | Description |
|---|---|
| bool | Returns success or failure |
StartServer()
Starts to listening for incoming clients
Declaration
public abstract bool StartServer()
Returns
| Type | Description |
|---|---|
| bool | Returns success or failure |
Events
OnTransportEvent
Occurs when the transport has a new transport network event. Can be used to make an event based transport instead of a poll based. Invocation has to occur on the Unity thread in the Update loop.
Declaration
public event NetworkTransport.TransportEventDelegate OnTransportEvent
Event Type
| Type | Description |
|---|---|
| NetworkTransport.TransportEventDelegate |