我认为我没有正确理解Unity Networking,因此这个问题。
当我的播放器死机时,我会在die() - 函数内调用脚本CmdSetScore,然后通过服务器调用它,然后再回到所有客户端:
public void Die() {
CmdSetScore(playerID, 1);
}
[Command]
public void CmdSetScore(string _playerID, int _score) {
Player _player = GameManager.GetPlayer(_playerID);
_player.RpcSetScore(_score);
}
[ClientRpc]
public void RpcSetScore(int _score) {
if (!isLocalPlayer) {
return;
}
score += _score;
[...]
问题是RpcSetScore被调用两次。 我的论点是因为我在游戏中有两个玩家,它被叫了两次,但是有三个玩家,它仍被叫两次。
它只发生在客户端。当在服务器端死亡时,它只被调用一次。
如何只调用一次函数?