簡體   English   中英

Unity Mirror,客戶端不執行服務器 cmd

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM