① 被[SyncVar]修饰的变量,只有服务器端能修改并同步给所有客户端。客户端能修改,但只是本地修改,不会同步。
② 使用[SyncVar(hook = nameof(方法名))]的形式,客户端可以监听到变量的值改动后,调用对应的回调方法。注意只有在变量值改变的时候,才会回调。注意服务器端回调不管用,在变量值变动后没有任何反应。
③ [SyncVar]是很重要的,独立的网络对象,被改动[SyncVar]变量后。新加入的网络Player也能在加入时,立即同步一遍最新的[SyncVar]修饰的变量值。
2026-09-08补充:
①有错误,并非只能服务器端能修改。NetworkBehaviour对象中存在[SyncVar]变量,在其Inspector面板就会发现SyncSettings,修改SyncDirection为Client To Server,在客户端就能直接修改[SyncVar]变量并同步给服务端和其他客户端(但注意本身的客户端也不会调用hook = 的方法)
示例代码:
public class NetCaiJiObj : NetworkBehaviour { [SyncVar(hook = nameof(OnActiveChanged))] [System.NonSerialized] public bool isActive = true; //这里使用[System.NonSerialized],是避免被Unity序列化,导致默认值修改失效的问题。 ////如果需要服务器端也同步有回调,可以再封装一个这个属性 //public bool ser_isActive //{ // get { return isActive; } // set // { // isActive = value; // OnActiveChanged(false, value); // } //} public void OnActiveChanged(bool oldVal, bool newVal) { gameObject.SetActive(newVal); } }
二、客户端
关于 [Command]
① 被[Command]修饰的方法,表示的是在客户端发起调用,具体是在服务器端执行的方法。注意是只能在客户端调用,服务端调用会被忽略的。(注意:客户端调用[Command]的方法,即使方法里有内容,也不会像调C#方法那样直接调用,Mirror已经重写底层逻辑。)
② 其中[Command(requiresAuthority = false)]的形式修饰的方法,表示着客户端所有游戏对象的代码都能调用这个方法来命令服务端执行。默认的[Command]是只有网络Player(或其下子对象)才有权调用的。(Command的requiresAuthority参数具体是NetworkIdentity组件来影响的权限,网络Player的NetworkIdentity在服务端初始化时就赋予了权限。网络Player预制体只需要在根对象上挂载一个NetworkIdentity组件,其下的所有子对象的NetworkBehaviour都是通用这一个NetworkIdentity,不需要每个需要同步的子对象都挂载一个NetworkIdentity,会报错)。注意客户端的任意对象,只要通过引用找到目标对象的[Command]方法,都能直接调用,这个没有权限限制。
③ Command 的用法,就是客户端发起调用,服务端执行,客户端那边方法可以不用写任何内容,服务端那边写方法内容,内容一般就是修改[SyncVar]参数或 调用 网络Player的[ClientRpc]、 [TargetRpc]方法等,来实现网络同步指令。
关于 [ClientRpc]、[TargetRpc]
① 这两种修饰的方法,都是服务器端发起调用,最终在客户端实际调用的。被这两个修饰的方法,在服务器端一般留空不写,在客户端具体实现方法内容。
② 其中的ClientRpc,表示能直接让所有客户端都同步调用一次。TargetRpc表示只让目标的客户端调用一次。具体例子:服务端如果调用某个网络Player的ClientRpc修饰的方法,所有客户端对应的目标网络Player都会调用一次。如果是服务端调用某个网络Player的TargetRpc修饰的方法,只有对应的客户端的网络Player会调用一次。
③ 用法一般就是在客户端的网络Player中,写好对应的[ClientRpc]、[TargetRpc]的方法内容。并通过[Command]让服务器端再调用自身的[ClientRpc]、[TargetRpc]的方法。
你在做电商后台,用户上传一张商品照片就要自动提取名称、型号、颜色;你在做客服系统,用户随手发了张订单截图就让机器人看懂"已发货"几个字在哪行。纯文字大模型做不到这些。本文用 Spring AI 2.0 的 GPT-4o / Claude 视觉模型&…...