The NetworkIdentity identifies objects across the network, between server and clients. Its primary data is a NetworkInstanceId which is allocated by the server and then set on clients. This is used in network communications to be able to lookup game objects on different machines.
The NetworkIdentity is used to synchronize information in the object with the network. Only the server should create instances of objects which have NetworkIdentity as otherwise they will not be properly connected to the system.
For complex objects with a hierarchy of subcomponents, the NetworkIdentity must be on the root of the hierarchy. It is not supported to have multiple NetworkIdentity components on subcomponents of a hierarchy.
NetworkBehaviour scripts require a NetworkIdentity on the game object to be able to function.
The NetworkIdentity manages the dirty state of the NetworkBehaviours of the object. When it discovers that NetworkBehaviours are dirty, it causes an update packet to be created and sent to clients.
The flow for serialization updates managed by the NetworkIdentity is:
* Each NetworkBehaviour has a dirty mask. This mask is available inside OnSerialize as syncVarDirtyBits
* Each SyncVar in a NetworkBehaviour script is assigned a bit in the dirty mask.
* Changing the value of SyncVars causes the bit for that SyncVar to be set in the dirty mask
* Alternatively, calling SetDirtyBit() writes directly to the dirty mask
* NetworkIdentity objects are checked on the server as part of it’s update loop
* If any NetworkBehaviours on a NetworkIdentity are dirty, then an UpdateVars packet is created for that object
* The UpdateVars packet is populated by calling OnSerialize on each NetworkBehaviour on the object
* NetworkBehaviours that are NOT dirty write a zero to the packet for their dirty bits
* NetworkBehaviours that are dirty write their dirty mask, then the values for the SyncVars that have changed
* If OnSerialize returns true for a NetworkBehaviour, the dirty mask is reset for that NetworkBehaviour, so it will not send again
until its value changes.
* The UpdateVars packet is sent to ready clients that are observing the object
On the client:
* an UpdateVars packet is received for an object
* The OnDeserialize function is called for each NetworkBehaviour script on the object
* Each NetworkBehaviour script on the object reads a dirty mask.
* If the dirty mask for a NetworkBehaviour is zero, the OnDeserialize functions returns without reading any more
* If the dirty mask is non-zero value, then the OnDeserialize function reads the values for the SyncVars that correspond to the dirty bits that are set
* If there are SyncVar hook functions, those are invoked with the value read from the stream.
clientAuthorityCallback | A callback that can be populated to be notified when the client-authority state of objects changes. |
assetId | Unique identifier used to find the source assets when server spawns the on clients. |
clientAuthorityOwner | The client that has authority for this object. This will be null if no client has authority. |
connectionToClient | The connection associated with this NetworkIdentity. This is only valid for player objects on the server. |
connectionToServer | The UConnection associated with this NetworkIdentity. This is only valid for player objects on a local client. |
hasAuthority | This returns true if this object is the authoritative version of the object in the distributed network application. |
isClient | Returns true if running as a client and this object was spawned by a server. |
isLocalPlayer | This returns true if this object is the one that represents the player on the local machine. |
isServer | Returns true if running as a server, which spawned the object. |
localPlayerAuthority | localPlayerAuthority means that the client of the "owning" player has authority over their own player object. |
netId | Unique identifier for this particular object instance, used for tracking objects between networked clients and the server. |
observers | The set of network connections (players) that can see this object. |
playerControllerId | The id of the player associated with this GameObject. |
sceneId | A unique identifier for NetworkIdentity objects within a scene. |
serverOnly | Flag to make this object only exist when the game is running as a server (or host). |
AssignClientAuthority | This assigns control of an object to a client via the client's NetworkConnection. |
ForceSceneId | Force the scene ID to a specific value. |
RebuildObservers | This causes the set of players that can see this object to be rebuild. The OnRebuildObservers callback function will be invoked on each NetworkBehaviour. |
RemoveClientAuthority | Removes ownership for an object for a client by its conneciton. |
ClientAuthorityCallback | The delegate type for the clientAuthorityCallback. |
enabled | Включенное Поведение обновляется, выключенное Поведение не обновляется. |
isActiveAndEnabled | Has the Behaviour had enabled called. |
gameObject | Игровой объект к которому прикреплён данный компонент. Компонент всегда прикреплён к игровому объекту. |
tag | Тег данного игрового объекта. |
transform | The Transform attached to this GameObject. |
runInEditMode | Allow a specific instance of a MonoBehaviour to run in edit mode (only available in the editor). |
useGUILayout | Disabling this lets you skip the GUI layout phase. |
hideFlags | Should the object be hidden, saved with the scene or modifiable by the user? |
name | The name of the object. |
BroadcastMessage | Вызывает метод названный methodName на каждом MonoBehaviour этого game object-а или любого из его потомков. |
CompareTag | Помечен ли данный игровой объект тегом tag? |
GetComponent | Возвращает компонент типа type, если он прикреплен к игровому объекту и null, если не прикреплен. |
GetComponentInChildren | Возвращает компонент типа type в GameObject или некоторого его потомка через поиск в глубину. |
GetComponentInParent | Возвращает все компоненты типа type из GameObject'а или из любого его родителя. |
GetComponents | Возвращает все компоненты типа type в GameObject. |
GetComponentsInChildren | Возвращает все компоненты типа type в GameObject или любому из его потомков. |
GetComponentsInParent | Возвращает все компоненты типа type в GameObject или любому из его родителей. |
SendMessage | Вызывает метод с названием methodName в каждом MonoBehaviour в этом игровом объекте. |
SendMessageUpwards | Вызывает метод с именем methodName в каждом MonoBehaviour в этом игровом объекте и в каждом предке поведения. |
CancelInvoke | Отменяет все вызовы Invoke в этом MonoBehaviour. |
Invoke | Вызывает метод methodName по истечении времени time секунд. |
InvokeRepeating | Вызывает метод methodName по истечении времени time секунд, затем повторяет вызов каждые repeatRate секунд. |
IsInvoking | Есть ли какой то ожидающий вызов methodName? |
StartCoroutine | Запуск корутины. |
StopAllCoroutines | Останавливает все корутины запущенные на этом MonoBehaviour. |
StopCoroutine | Останавливает все корутины с именем methodName запущенные на этом MonoBehaviour. |
GetInstanceID | Returns the instance id of the object. |
ToString | Returns the name of the GameObject. |
Logs message to the Unity Console (identical to Debug.Log). | |
Destroy | Удаляет GameObject, Component или Asset. |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Makes the object target not be destroyed automatically when loading a new scene. |
FindObjectOfType | Returns the first active loaded object of Type type. |
FindObjectsOfType | Returns a list of all active loaded objects of Type type. |
Instantiate | Clones the object original and returns the clone. |
bool | Does the object exist? |
operator != | Compares if two objects refer to a different object. |
operator == | Compares two object references to see if they refer to the same object. |
Awake | Функция Awake вызывается когда экземпляр скрипта будет загружен. |
FixedUpdate | Frame-rate independent MonoBehaviour.FixedUpdate message for physics calculations. |
LateUpdate | LateUpdate вызывается каждый кадр, если Behaviour включен. |
OnAnimatorIK | Обратный вызов (Callback) для установки IK анимации (инверсной кинематики). |
OnAnimatorMove | Обратный вызов для обработки перемещения анимации для модификации смещения корня. |
OnApplicationFocus | Посылается ко всем игровым объектам когда плейер получает или теряет фокус. |
OnApplicationPause | Посылается ко всем игровым объектам когда плейер на паузе. |
OnApplicationQuit | Sent to all game objects before the application quits. |
OnAudioFilterRead | If OnAudioFilterRead is implemented, Unity will insert a custom filter into the audio DSP chain. |
OnBecameInvisible | OnBecameInvisible is called when the renderer is no longer visible by any camera. |
OnBecameVisible | OnBecameVisible is called when the renderer became visible by any camera. |
OnCollisionEnter | OnCollisionEnter вызывается, когда этот collider/rigidbody начал соприкосновение с другим rigidbody/collider. |
OnCollisionEnter2D | Передается когда входящий коллайдер контактирует с коллайдером данного объекта (только 2D физика). |
OnCollisionExit | OnCollisionExit вызывается, когда collider/rigidbody прекращает контакт с другим rigidbody/collider. |
OnCollisionExit2D | Передается, когда коллайдер другого объекта перестает соприкасаться с коллайдером этого объекта (только 2D физика). |
OnCollisionStay | :ref::OnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider. |
OnCollisionStay2D | Передается каждый кадр, пока коллайдер другого объекта контактирует с коллайдером данного объекта (только 2D физика). |
OnConnectedToServer | Called on the client when you have successfully connected to a server. |
OnControllerColliderHit | OnControllerColliderHit вызывается тогда, когда контроллер сталкивается с коллайдеров, во время выполнения метода Move. |
OnDestroy | Destroying the attached Behaviour will result in the game or scene receiving OnDestroy. |
OnDisable | This function is called when the behaviour becomes disabled. |
OnDisconnectedFromServer | Called on the client when the connection was lost or you disconnected from the server. |
OnDrawGizmos | Implement OnDrawGizmos if you want to draw gizmos that are also pickable and always drawn. |
OnDrawGizmosSelected | Implement OnDrawGizmosSelected to draw a gizmo if the object is selected. |
OnEnable | This function is called when the object becomes enabled and active. |
OnFailedToConnect | Called on the client when a connection attempt fails for some reason. |
OnFailedToConnectToMasterServer | Called on clients or servers when there is a problem connecting to the MasterServer. |
OnGUI | OnGUI is called for rendering and handling GUI events. |
OnJointBreak | Вызывается при разрушении сустава, прикрепленного к такому же игровому объекту. |
OnJointBreak2D | Called when a Joint2D attached to the same game object breaks. |
OnMasterServerEvent | Called on clients or servers when reporting events from the MasterServer. |
OnMouseDown | OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider. |
OnMouseDrag | OnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse. |
OnMouseEnter | Called when the mouse enters the GUIElement or Collider. |
OnMouseExit | Called when the mouse is not any longer over the GUIElement or Collider. |
OnMouseOver | Called every frame while the mouse is over the GUIElement or Collider. |
OnMouseUp | OnMouseUp is called when the user has released the mouse button. |
OnMouseUpAsButton | OnMouseUpAsButton is only called when the mouse is released over the same GUIElement or Collider as it was pressed. |
OnNetworkInstantiate | Called on objects which have been network instantiated with Network.Instantiate. |
OnParticleCollision | OnControllerColliderHit вызывается тогда, когда контроллер сталкивается с коллайдеров, во время выполнения метода Move. |
OnParticleTrigger | OnParticleTrigger is called when any particles in a particle system meet the conditions in the trigger module. |
OnPlayerConnected | Called on the server whenever a new player has successfully connected. |
OnPlayerDisconnected | Called on the server whenever a player disconnected from the server. |
OnPostRender | OnPostRender is called after a camera finished rendering the scene. |
OnPreCull | OnPreCull вызывается до того, как камера отсечёт сцену. |
OnPreRender | OnPreRender вызывается перед тем, как камера начнёт рендерить сцену. |
OnRenderImage | OnRenderImage вызывается после того как весь рендеринг для отрисовки изображения завершиться. |
OnRenderObject | OnRenderObject вызывается после того, как камера отрендерила сцену. |
OnSerializeNetworkView | Used to customize synchronization of variables in a script watched by a network view. |
OnServerInitialized | Called on the server whenever a Network.InitializeServer was invoked and has completed. |
OnTransformChildrenChanged | This function is called when the list of children of the transform of the GameObject has changed. |
OnTransformParentChanged | This function is called when the parent property of the transform of the GameObject has changed. |
OnTriggerEnter | OnTriggerEnter вызывается, когда Collider other входит в триггер. |
OnTriggerEnter2D | Передается, когда другой обьект входит в триггер присоединенный к данному обьекту (только 2D физика). |
OnTriggerExit | OnTriggerExit вызывается, когда Collider other перестает соприкасаться с триггером. |
OnTriggerExit2D | Передается когда другой объект покидает триггер, присоединенный к данному объекту(только 2D физика). |
OnTriggerStay | OnTriggerStay is called once per physics update for every Collider other that is touching the trigger. |
OnTriggerStay2D | Передается каждый кадр, пока другой объект находится в триггере, присоединенном к этому объекту (только 2D физика). |
OnValidate | Эта функция вызывается когда скрипт загружается или изменяется значение в Инспекторе (Вызывается только в редакторе). |
OnWillRenderObject | OnWillRenderObject is called for each camera if the object is visible and not a UI element. |
Reset | Reset to default values. |
Start | Start is called on the frame when a script is enabled just before any of the Update methods are called the first time. |
Update | Update вызывается каждый кадр, если MonoBehaviour включен. |