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
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  | 
      
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  | 
      
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 |