官方解释
SyncVars 是从 NetworkBehaviour 继承的类的属性,它们从服务器同步到客户端。当生成游戏对象或新玩家加入正在进行的游戏时,将向他们发送对他们可见的联网对象上所有 SyncVar 的最新状态。使用SyncVar
自定义属性指定要同步脚本中的哪些变量。
SyncVars 的状态在调用之前应用于客户端上的游戏对象OnStartClient()
,因此对象的状态在内部始终是最新的OnStartClient()
。
SyncVars 可以使用Mirror 支持的任何类型。在单个 NetworkBehaviour 脚本中最多可以有 64 个 SyncVar,包括 SyncList(请参阅下面的下一节)。
当 SyncVar 的值发生更改时,服务器会自动发送 SyncVar 更新,因此您无需跟踪它们何时更改或自己发送有关更改的信息。在检查器中更改值不会触发更新。
Abyss: SyncVars是所有客户端即时同步的属性,使用方法如下
public class Enemy : NetworkBehaviour { [SyncVar] public int health = 100; void OnMouseUp() { NetworkIdentity ni = NetworkClient.connection.identity; PlayerController pc = ni.GetComponent<PlayerController>(); pc.currentTarget = gameObject; } }
Abyss:每当health更新,所有客户端同步更新
Abyss:此属性可继承,子对象继承来的SyncVars也同步,如下
class Pet : NetworkBehaviour { [SyncVar] string name; } class Cat : Pet { [SyncVar] public Color32 color; }