2

众所周知,缺乏 Unet 的文档。

我很想得到这个答案,希望它可以帮助其他人稍后搜索。

这是我正在尝试做的事情:

  1. 检测播放器客户端上的光线投射命中。
  2. 使用 [Command] 指示对专用服务器的命中
  3. 使用 [TargetRPC] 通知一个被击中的客户端

问题是 TargetRPC 需要一个 NetworkConnection 值,但唯一记录在案的方法是使用该对象中的 ConnectToClient - 我没有,我需要得到它。

如何以可以转换为正确 NetworkConnection 值的方式识别我在客户端点击到服务器的播放器。

在本地玩家权限对象上:

CmdIHitSomeone(unknown);

[Command]
void CmdIHitSomeone(NetworkConnect unknown) {
  TargetLetYourVictimFeelIt(unknown);
}

[TargetRPC]
void TargetLetYourVictimFeelIt(NetworkConnection unknown){
  //do something bad here
}
4

2 回答 2

4
[Command]
void CmdIHitSomeone(int amountToHit, NetworkIdentity target) 
{
  TargetLetYourVictimFeelIt(target.connectionToClient , amountToHit);     
}
[TargetRPC]
void TargetLetYourVictimFeelIt(NetworkConnection target, int amount)
{
  //do something bad here
}
// call your command by getting NetworkIdentitiy component of your target/enemy
GameObject target; 
CmdIHitSomeone(10, target.GetComponent<NetworkIdentity>());
于 2018-01-07T21:03:16.243 回答
1
NetworkConnection connnection = NetworkServer.objects[netId].connectionToClient;
于 2017-01-10T06:12:59.747 回答