[英]Unity Mirror, client doesn't execute server 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;
}
我想我解決了這個問題,雖然我不確定問題出在這個問題上,但我仍然沒有使用 Monobehaviour class 並希望該命令能夠正確編譯,因為如果出現問題,通常鏡像會拋出錯誤. 我剛剛將 cmd 方法從 networkbehaviour 移到了單獨的 class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.