NetworkBehaviour is an abstract class that derives from
MonoBehaviour and is the base class all your networked scripts should derive from. Each
NetworkBehaviour is owned by a
NetworkBehaviour aren't serializable types so they can't be used in
NetworkVariables by default. For infromation on how to send a reference to a
NetworkVariables see NetworkObject &NetworkBehaviour.
NetworkBehaviours can contain RPC methods and
NetworkVariables. When you call an RPC function, the function isn't called locally. Instead a message is sent containing your parameters, the
networkId of the
NetworkObject that owns the
NetworkBehaviour that the Invoke was called on, and the "index" of the
NetworkBehaviour on the
This means for multi project setups (one project for the server and another one for the client), it's important that the order and amount of
NetworkBehaviours on each
NetworkObject is the same. It also means that
NetworkBehaviours can only exist as a child or on the same object as a
NetworkObject that is actively Spawned.
You can have multiple
NetworkBehaviors on the same object and on any child object. Each
NetworkBehaviour belongs to a
NetworkObject. It will be the first parent or first component on the current object that is found. You can only have one
NetworkObject at the root of the prefab.
NetworkStart is called on each behavior related to the
NetworkBehaviour you can use
RPCs to synchronize state and send messages over the network.