Unity网络聊天,需要围绕命令更新聊天的方式

问题描述:

我正在联合进行在线游戏聊天。它是通过一个预制的ChatObject来完成的,它包含一个脚本以及绘制文本和窗口所需的所有内容。该聊天包含一个带有最后30条消息的SyncListString,这是从服务器同步到客户端,但不是相反。统一报价“,这是命令的工作”Unity网络聊天,需要围绕命令更新聊天的方式

[Command] 
void CmdUpdateChatAcross(string message) 
{ 
    UpdateChat(message); 
    RpcUpdateChat(); 
} 

[ClientRpc] 
void RpcUpdateChat() 
{ 
    UpdateChat(""); 
} 

UpdateChat()只是用新消息绘制同步列表。 这对于一个服务器和一个客户端来说当前工作正常,因为我可以用客户端授权产生聊天对象。客户端需要授权才能将命令发送到服务器版本。但我还没有弄清楚(或者肯定我想)如何将聊天对象的权限授予所有客户端。

我只是不这样做吗?寻找另一种方式?有一个功能可以分配给所有者,但还没有弄清楚它是如何工作的,或者它是否只授予当地版本的权限。正如我假设我不能拥有多个所有者。

服务器可以发送消息到所有客户端没有问题。但我无法让玩家正确地将他们的消息发送到服务器。

我完成这个的方法是给玩家预制一个处理从UI传递消息到服务器的脚本。这是因为播放器对象总是可以向服务器发送命令。所以,你有你的用户界面对象,从玩家的一些输入。它提供了一个本地播放器上的剧本,我们将调用NetworkPlayerBridge

public class NetworkPlayerBridge : NetworkBehaviour 
{ 
    //Call this from your chat window object on the local player 
    public void BroadcastChat(string msg) 
    { 
     CmdBroadcastChat(msg); 
    } 

    [Command] 
    public void CmdBroadcastChat(string msg) 
    { 
     //send this message to the chat window on the server and place 
     //it in a SyncList so that all clients will be updated 
    } 
}