Skip to main content

Class NetworkTransport

The generic transport class all Netcode for GameObjects network transport implementations derive from. Use this class to add a custom transport. for an example of how a transport is integrated

Inheritance

System.Object

NetworkTransport

UnityTransport

Namespace: Unity.Netcode
Assembly: MLAPI.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
TypeDescription
System.Booleantrue if is supported; otherwise, false.

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
TypeDescription
System.UInt64

Methods

DisconnectLocalClient()

Disconnects the local client from the server

Declaration
public abstract void DisconnectLocalClient()

DisconnectRemoteClient(UInt64)

Disconnects a client from the server

Declaration
public abstract void DisconnectRemoteClient(ulong clientId)
Parameters
TypeNameDescription
System.UInt64clientIdThe clientId to disconnect

GetCurrentRtt(UInt64)

Gets the round trip time for a specific client. This method is optional

Declaration
public abstract ulong GetCurrentRtt(ulong clientId)
Parameters
TypeNameDescription
System.UInt64clientIdThe clientId to get the RTT from
Returns
TypeDescription
System.UInt64Returns the round trip time in milliseconds

Initialize(NetworkManager)

Initializes the transport

Declaration
public abstract void Initialize(NetworkManager networkManager = null)
Parameters
TypeNameDescription
NetworkManagernetworkManageroptionally pass in NetworkManager

InvokeOnTransportEvent(NetworkEvent, UInt64, ArraySegment\<Byte>, Single)

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
TypeNameDescription
NetworkEventeventTypeThe event type
System.UInt64clientIdThe clientId this event is for
System.ArraySegment\<System.Byte>payloadThe incoming data payload
System.SinglereceiveTimeThe time the event was received, as reported by Time.realtimeSinceStartup.

PollEvent(out UInt64, out ArraySegment\<Byte>, out Single)

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
TypeNameDescription
System.UInt64clientIdThe clientId this event is for
System.ArraySegment\<System.Byte>payloadThe incoming data payload
System.SinglereceiveTimeThe time the event was received, as reported by Time.realtimeSinceStartup.
Returns
TypeDescription
NetworkEventReturns the event type

Send(UInt64, 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
TypeNameDescription
System.UInt64clientIdThe clientId to send to
System.ArraySegment\<System.Byte>payloadThe data to send
NetworkDeliverynetworkDeliveryThe 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
TypeDescription
System.BooleanReturns success or failure

StartServer()

Starts to listening for incoming clients

Declaration
public abstract bool StartServer()
Returns
TypeDescription
System.BooleanReturns 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
TypeDescription
NetworkTransport.TransportEventDelegate