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
}
}