Unity Mirror,客户端不执行服务器 cmd



当玩家按键时,如果他触摸了其他玩家,他会尝试markPlayer
当客户端触摸主机播放器时;CmdServer";和停止,但在主机播放器上,它完全完成了所有方法并在另一个角色上变色;
客户端代码

//somemovementClass
private void TriggerEntered(PlayerContext playerContext)
{
Debug.Log($"Collided with {playerContext.name}");
CmdServer(playerContext);
}
[Command]
public void CmdServer(PlayerContext playerContext)
{
Debug.Log($"CmdServer");
playerContext.MarkPlayer();
}
// PlayerContext.cs
[SyncVar(hook = nameof(OnPlayerGetDamage))]
private bool wasDamaged; 
[Server]
public void MarkPlayer()
{
Debug.Log("On Server");
wasDamaged = true;
}
private void OnPlayerGetDamage(bool oldState, bool newState)
{
Debug.Log("On Get Damage");
cashedMaterial.color = Color.red;
}

我认为我解决了这个问题,尽管我不确定这个问题是否具体在这个问题中,但我仍然没有使用Monopahavior类,并希望该命令能够正确编译,因为如果出现问题,通常会镜像抛出错误。我刚刚将cmd方法从networkbehavior 移到了一个单独的类中

最新更新