docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class NetworkBehaviour

    The base class to override to write network code. Inherits MonoBehaviour.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    NetworkBehaviour
    NetworkAnimator
    NetworkRigidbodyBase
    NetworkTransform
    ListTestHelperBase
    RpcProxyMessageTesting.RpcProxyText
    RpcTestComponent
    ObjectNameIdentifier
    Inherited Members
    MonoBehaviour.IsInvoking()
    MonoBehaviour.CancelInvoke()
    MonoBehaviour.Invoke(string, float)
    MonoBehaviour.InvokeRepeating(string, float, float)
    MonoBehaviour.CancelInvoke(string)
    MonoBehaviour.IsInvoking(string)
    MonoBehaviour.StartCoroutine(string)
    MonoBehaviour.StartCoroutine(string, object)
    MonoBehaviour.StartCoroutine(IEnumerator)
    MonoBehaviour.StartCoroutine_Auto(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.destroyCancellationToken
    MonoBehaviour.useGUILayout
    MonoBehaviour.didStart
    MonoBehaviour.didAwake
    MonoBehaviour.runInEditMode
    Behaviour.enabled
    Behaviour.isActiveAndEnabled
    Component.GetComponent(Type)
    Component.GetComponent<T>()
    Component.TryGetComponent(Type, out Component)
    Component.TryGetComponent<T>(out T)
    Component.GetComponent(string)
    Component.GetComponentInChildren(Type, bool)
    Component.GetComponentInChildren(Type)
    Component.GetComponentInChildren<T>(bool)
    Component.GetComponentInChildren<T>()
    Component.GetComponentsInChildren(Type, bool)
    Component.GetComponentsInChildren(Type)
    Component.GetComponentsInChildren<T>(bool)
    Component.GetComponentsInChildren<T>(bool, List<T>)
    Component.GetComponentsInChildren<T>()
    Component.GetComponentsInChildren<T>(List<T>)
    Component.GetComponentInParent(Type, bool)
    Component.GetComponentInParent(Type)
    Component.GetComponentInParent<T>(bool)
    Component.GetComponentInParent<T>()
    Component.GetComponentsInParent(Type, bool)
    Component.GetComponentsInParent(Type)
    Component.GetComponentsInParent<T>(bool)
    Component.GetComponentsInParent<T>(bool, List<T>)
    Component.GetComponentsInParent<T>()
    Component.GetComponents(Type)
    Component.GetComponents(Type, List<Component>)
    Component.GetComponents<T>(List<T>)
    Component.GetComponents<T>()
    Component.GetComponentIndex()
    Component.CompareTag(string)
    Component.CompareTag(TagHandle)
    Component.SendMessageUpwards(string, object, SendMessageOptions)
    Component.SendMessageUpwards(string, object)
    Component.SendMessageUpwards(string)
    Component.SendMessageUpwards(string, SendMessageOptions)
    Component.SendMessage(string, object)
    Component.SendMessage(string)
    Component.SendMessage(string, object, SendMessageOptions)
    Component.SendMessage(string, SendMessageOptions)
    Component.BroadcastMessage(string, object, SendMessageOptions)
    Component.BroadcastMessage(string, object)
    Component.BroadcastMessage(string)
    Component.BroadcastMessage(string, SendMessageOptions)
    Component.transform
    Component.gameObject
    Component.tag
    Object.GetInstanceID()
    Object.GetHashCode()
    Object.Equals(object)
    Object.InstantiateAsync<T>(T)
    Object.InstantiateAsync<T>(T, Transform)
    Object.InstantiateAsync<T>(T, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int)
    Object.InstantiateAsync<T>(T, int, Transform)
    Object.InstantiateAsync<T>(T, int, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion, CancellationToken)
    Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>, CancellationToken)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Scene)
    Object.Instantiate(Object, Transform)
    Object.Instantiate(Object, Transform, bool)
    Object.Instantiate<T>(T)
    Object.Instantiate<T>(T, Vector3, Quaternion)
    Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
    Object.Instantiate<T>(T, Transform)
    Object.Instantiate<T>(T, Transform, bool)
    Object.Destroy(Object, float)
    Object.Destroy(Object)
    Object.DestroyImmediate(Object, bool)
    Object.DestroyImmediate(Object)
    Object.FindObjectsOfType(Type)
    Object.FindObjectsOfType(Type, bool)
    Object.FindObjectsByType(Type, FindObjectsSortMode)
    Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode)
    Object.DontDestroyOnLoad(Object)
    Object.DestroyObject(Object, float)
    Object.DestroyObject(Object)
    Object.FindSceneObjectsOfType(Type)
    Object.FindObjectsOfTypeIncludingAssets(Type)
    Object.FindObjectsOfType<T>()
    Object.FindObjectsByType<T>(FindObjectsSortMode)
    Object.FindObjectsOfType<T>(bool)
    Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
    Object.FindObjectOfType<T>()
    Object.FindObjectOfType<T>(bool)
    Object.FindFirstObjectByType<T>()
    Object.FindAnyObjectByType<T>()
    Object.FindFirstObjectByType<T>(FindObjectsInactive)
    Object.FindAnyObjectByType<T>(FindObjectsInactive)
    Object.FindObjectsOfTypeAll(Type)
    Object.FindObjectOfType(Type)
    Object.FindFirstObjectByType(Type)
    Object.FindAnyObjectByType(Type)
    Object.FindObjectOfType(Type, bool)
    Object.FindFirstObjectByType(Type, FindObjectsInactive)
    Object.FindAnyObjectByType(Type, FindObjectsInactive)
    Object.ToString()
    Object.name
    Object.hideFlags
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: Unity.Netcode
    Assembly: Unity.Netcode.Runtime.dll
    Syntax
    public abstract class NetworkBehaviour : MonoBehaviour

    Properties

    HasAuthority

    Determines if the local client has authority over the associated NetworkObject.

    • In client-server contexts: returns true if `IsServer` or `IsHost`.
    • In distributed authority contexts: returns true if `IsOwner`.
    Declaration
    public bool HasAuthority { get; }
    Property Value
    Type Description
    bool

    HasNetworkObject

    Gets whether this NetworkBehaviour instance has a NetworkObject owner.

    Declaration
    public bool HasNetworkObject { get; }
    Property Value
    Type Description
    bool

    IsClient

    Gets whether executing as a client.

    Declaration
    public bool IsClient { get; }
    Property Value
    Type Description
    bool

    IsHost

    Gets whether executing as a host (both server and client).

    Declaration
    public bool IsHost { get; }
    Property Value
    Type Description
    bool

    IsLocalPlayer

    If a NetworkObject is assigned, returns whether the NetworkObject is the local player object. If no NetworkObject is assigned, returns false.

    Declaration
    public bool IsLocalPlayer { get; }
    Property Value
    Type Description
    bool

    IsOwnedByServer

    Gets whether the object has an owner.

    Declaration
    public bool IsOwnedByServer { get; }
    Property Value
    Type Description
    bool

    IsOwner

    Gets whether the object is owned by the local player or if the object is the local player object.

    Declaration
    public bool IsOwner { get; }
    Property Value
    Type Description
    bool

    IsServer

    Gets whether executing as a server.

    Declaration
    public bool IsServer { get; }
    Property Value
    Type Description
    bool

    IsSessionOwner

    Gets whether the client is the distributed authority mode session owner.

    Declaration
    public bool IsSessionOwner { get; }
    Property Value
    Type Description
    bool

    IsSpawned

    Determines whether it's safe to access a NetworkObject and NetworkManager from within a NetworkBehaviour component. Primarily useful when checking NetworkObject or NetworkManager properties within FixedUpate.

    Declaration
    public bool IsSpawned { get; }
    Property Value
    Type Description
    bool

    NetworkBehaviourId

    Gets NetworkId for this NetworkBehaviour from the owner NetworkObject.

    Declaration
    public ushort NetworkBehaviourId { get; }
    Property Value
    Type Description
    ushort

    NetworkManager

    Gets the NetworkManager that owns this NetworkBehaviour instance. See NetworkObject note for how there is a chicken/egg problem when not initialized.

    Declaration
    public NetworkManager NetworkManager { get; }
    Property Value
    Type Description
    NetworkManager

    NetworkObject

    Gets the NetworkObject that owns this NetworkBehaviour instance.

    Declaration
    public NetworkObject NetworkObject { get; }
    Property Value
    Type Description
    NetworkObject

    NetworkObjectId

    Gets the NetworkId of the NetworkObject that owns this NetworkBehaviour instance.

    Declaration
    public ulong NetworkObjectId { get; }
    Property Value
    Type Description
    ulong

    OwnerClientId

    Gets the ClientId that owns this NetworkObject.

    Declaration
    public ulong OwnerClientId { get; }
    Property Value
    Type Description
    ulong

    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 { get; }
    Property Value
    Type Description
    RpcTarget

    ServerIsHost

    Gets whether the server (local or remote) is a host.

    Declaration
    public bool ServerIsHost { get; }
    Property Value
    Type Description
    bool

    m_TargetIdBeingSynchronized

    The relative client identifier targeted for the serialization of this NetworkBehaviour instance.

    Declaration
    protected ulong m_TargetIdBeingSynchronized { get; }
    Property Value
    Type Description
    ulong
    Remarks

    This value is set prior to OnSynchronize<T>(ref BufferSerializer<T>) being invoked. For writing (server-side), this is useful to know which client will receive the serialized data. For reading (client-side), this will be the LocalClientId. When synchronization of this instance is complete, this value is reset to 0.

    Methods

    GetNetworkBehaviour(ushort)

    Returns the NetworkBehaviour with a given BehaviourId for the current NetworkObject.

    Declaration
    protected NetworkBehaviour GetNetworkBehaviour(ushort behaviourId)
    Parameters
    Type Name Description
    ushort behaviourId

    The behaviourId to return

    Returns
    Type Description
    NetworkBehaviour

    Returns NetworkBehaviour with given behaviourId

    GetNetworkObject(ulong)

    Gets the local instance of a NetworkObject with a given NetworkId.

    Declaration
    protected NetworkObject GetNetworkObject(ulong networkId)
    Parameters
    Type Name Description
    ulong networkId
    Returns
    Type Description
    NetworkObject

    InternalOnNetworkPostSpawn()

    Declaration
    protected virtual void InternalOnNetworkPostSpawn()

    InternalOnNetworkSessionSynchronized()

    Declaration
    protected virtual void InternalOnNetworkSessionSynchronized()

    OnDeferringDespawn(int)

    Only for use in distributed authority mode. Invoked only on the authority instance when a NetworkObject is deferring its despawn on non-authoritative instances.

    Declaration
    public virtual void OnDeferringDespawn(int despawnTick)
    Parameters
    Type Name Description
    int despawnTick

    The future network tick that the NetworkObject will be despawned on non-authoritative instances

    Remarks

    See also: DeferDespawn(int, bool)

    OnDestroy()

    Invoked when the GameObject the NetworkBehaviour is attached to is destroyed. If you override this, you must always invoke the base class version of this OnDestroy() method.

    Declaration
    public virtual void OnDestroy()

    OnGainedOwnership()

    In client-server contexts, this method is invoked on both the server and the local client of the owner when NetworkObject ownership is assigned.

    In distributed authority contexts, this method is only invoked on the local client that has been assigned ownership of the associated NetworkObject.

    Declaration
    public virtual void OnGainedOwnership()

    OnInSceneObjectsSpawned()

    When a scene is loaded and in-scene placed NetworkObjects are finished spawning, this method is invoked on all of the newly spawned in-scene placed NetworkObjects. This method runs both client and server side.

    Declaration
    protected virtual void OnInSceneObjectsSpawned()
    Remarks

    This method can be used to handle post-scene loaded actions for in-scene placed NetworkObjcts where you might need to access a different NetworkObject and/or NetworkBehaviour not local to the current NetworkObject context.

    OnLostOwnership()

    In client-server contexts, this method is invoked on the local client when it loses ownership of the associated NetworkObject and on the server when any client loses ownership.

    In distributed authority contexts, this method is only invoked on the local client that has lost ownership of the associated NetworkObject.

    Declaration
    public virtual void OnLostOwnership()

    OnNetworkDespawn()

    Gets called when the NetworkObject gets despawned. This method runs both client and server side.

    Declaration
    public virtual void OnNetworkDespawn()

    OnNetworkObjectParentChanged(NetworkObject)

    Gets called when the parent NetworkObject of this NetworkBehaviour's NetworkObject has changed.

    Declaration
    public virtual void OnNetworkObjectParentChanged(NetworkObject parentNetworkObject)
    Parameters
    Type Name Description
    NetworkObject parentNetworkObject

    the new NetworkObject parent

    OnNetworkPostSpawn()

    Gets called after the NetworkObject is spawned. All NetworkBehaviours associated with the NetworkObject will have had OnNetworkSpawn() invoked.

    Declaration
    protected virtual void OnNetworkPostSpawn()
    Remarks

    Will be invoked on each NetworkBehaviour associated with the NetworkObject being spawned. All associated NetworkBehaviour components will have had OnNetworkSpawn() invoked on the spawned NetworkObject.

    OnNetworkPreSpawn(ref NetworkManager)

    Gets called after the NetworkObject is spawned. No NetworkBehaviours associated with the NetworkObject will have had OnNetworkSpawn() invoked yet. A reference to NetworkManager is passed in as a parameter to determine the context of execution (IsServer or IsClient).

    Declaration
    protected virtual void OnNetworkPreSpawn(ref NetworkManager networkManager)
    Parameters
    Type Name Description
    NetworkManager networkManager

    a ref to the NetworkManager since this is not yet set on the NetworkBehaviour

    Remarks

    The NetworkBehaviour will not have anything assigned to it at this point in time. Settings like ownership, NetworkBehaviourId, NetworkManager, and most other spawn-related properties will not be set. This can be used to handle things like initializing a NetworkVariable.

    OnNetworkSessionSynchronized()

    This method is only available client-side. When a new client joins it's synchronized with all spawned NetworkObjects and scenes loaded for the session joined. At the end of the synchronization process, when all NetworkObjects and scenes (if scene management is enabled) have finished synchronizing, all NetworkBehaviour components associated with spawned NetworkObjects will have this method invoked.

    Declaration
    protected virtual void OnNetworkSessionSynchronized()
    Remarks

    This can be used to handle post-synchronization actions where you might need to access a different NetworkObject and/or NetworkBehaviour not local to the current NetworkObject context. This is only invoked on clients during a client-server network topology session.

    OnNetworkSpawn()

    Gets called when the NetworkObject gets spawned, message handlers are ready to be registered, and the network is set up.

    Declaration
    public virtual void OnNetworkSpawn()

    OnOwnershipChanged(ulong, ulong)

    Invoked on all clients. Override this method to be notified of any ownership changes (even if the instance was neither the previous or newly assigned current owner).

    Declaration
    protected virtual void OnOwnershipChanged(ulong previous, ulong current)
    Parameters
    Type Name Description
    ulong previous

    the previous owner

    ulong current

    the current owner

    OnReanticipate(double)

    Declaration
    public virtual void OnReanticipate(double lastRoundTripTime)
    Parameters
    Type Name Description
    double lastRoundTripTime

    OnSynchronize<T>(ref BufferSerializer<T>)

    Override this method if your derived NetworkBehaviour requires custom synchronization data. Use of this method is only for the initial client synchronization of NetworkBehaviours and will increase the payload size for client synchronization and dynamically spawned NetworkObjects.

    Declaration
    protected virtual void OnSynchronize<T>(ref BufferSerializer<T> serializer) where T : IReaderWriter
    Parameters
    Type Name Description
    BufferSerializer<T> serializer

    The serializer to use to read and write the data.

    Type Parameters
    Name Description
    T

    Either BufferSerializerReader or BufferSerializerWriter, depending whether the serializer is in read mode or write mode.

    Remarks

    When serializing (writing), this method is invoked during the client synchronization period and when spawning new NetworkObjects. When deserializing (reading), this method is invoked prior to the NetworkBehaviour's associated NetworkObject being spawned.


    Did you find this page useful? Please give it a rating:

    Thanks for rating this page!

    Report a problem on this page

    What kind of problem would you like to report?

    • This page needs code samples
    • Code samples do not work
    • Information is missing
    • Information is incorrect
    • Information is unclear or confusing
    • There is a spelling/grammar error on this page
    • Something else

    Thanks for letting us know! This page has been marked for review based on your feedback.

    If you have time, you can provide more information to help us fix the problem faster.

    Provide more information

    You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:

    You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:

    You've told us there is information missing from this page. Please tell us more about what's missing:

    You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:

    You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:

    You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:

    You've told us this page has a problem. Please tell us more about what's wrong:

    Thank you for helping to make the Unity documentation better!

    Your feedback has been submitted as a ticket for our documentation team to review.

    We are not able to reply to every ticket submitted.

    In This Article
    • Properties
      • HasAuthority
      • HasNetworkObject
      • IsClient
      • IsHost
      • IsLocalPlayer
      • IsOwnedByServer
      • IsOwner
      • IsServer
      • IsSessionOwner
      • IsSpawned
      • NetworkBehaviourId
      • NetworkManager
      • NetworkObject
      • NetworkObjectId
      • OwnerClientId
      • RpcTarget
      • ServerIsHost
      • m_TargetIdBeingSynchronized
    • Methods
      • GetNetworkBehaviour(ushort)
      • GetNetworkObject(ulong)
      • InternalOnNetworkPostSpawn()
      • InternalOnNetworkSessionSynchronized()
      • OnDeferringDespawn(int)
      • OnDestroy()
      • OnGainedOwnership()
      • OnInSceneObjectsSpawned()
      • OnLostOwnership()
      • OnNetworkDespawn()
      • OnNetworkObjectParentChanged(NetworkObject)
      • OnNetworkPostSpawn()
      • OnNetworkPreSpawn(ref NetworkManager)
      • OnNetworkSessionSynchronized()
      • OnNetworkSpawn()
      • OnOwnershipChanged(ulong, ulong)
      • OnReanticipate(double)
      • OnSynchronize<T>(ref BufferSerializer<T>)
    Back to top
    Copyright © 2024 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)