(006)Mirror 权限的说明

Network Authority

Network Authority 决定谁拥有物体并且可以控制物体。

Server Authority

服务器权限是指服务器对对象拥有控制权。默认情况下,服务器对某个对象拥有权限。这意味着服务器将管理和控制可收集物品、移动平台、NPC 和其他任何与玩家无关的联网对象。

Client Authority

客户授权是指客户对某个对象拥有控制权。

当客户端对对象拥有权限时,就意味着他们可以调用命令,而当客户端断开连接时,对象将自动销毁。

即使客户端拥有对象的权限,服务器仍可控制 SyncVar 和其他序列化功能。组件需要 使用 “命令”(Commands) 更新服务器上的状态,以便与其他客户端同步。

赋予权限的方式

默认情况下,服务器对所有对象都有权限。服务器可以向客户端需要控制的对象授予权限。

使用 NetworkServer.AddPlayerForConnection 生成玩家对象,它将自动获得授权。

使用 NetworkServer.Spawn,在对象生成时授予客户端权。

GameObject go = Instantiate(prefab);
NetworkServer.Spawn(go, connectionToClient);

使用 identity.AssignClientAuthority,随时向客户端授予权限。只需在要授予权限的对象上调用 AssignClientAuthority 即可。

// Command on player object
void CmdPickupItem(NetworkIdentity item)
{
    item.AssignClientAuthority(connectionToClient); 
}

移除赋予的权限

使用 identity.RemoveClientAuthority() 移除赋予的权限:

identity.RemoveClientAuthority();

Player 的权限不能移除,只能使用替换的方式:

NetworkServer.ReplacePlayerForConnection

事件

当权限发生变化的时候,会触发事件 OnStartAuthority 或者 OnStopAuthority

权限检查

客户端:

identity.isOwne

服务器:

可以检查 identity.connectionToClient 属性,查看哪个客户端对对象拥有权限。如果为空,则服务器拥有权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值