connectionId | 客户端连接 ID。 |
msg | 要发送的消息结构。 |
msgType | 消息类型。 |
将消息发送到拥有指定连接 ID 的客户端。
它将连接 ID 以及消息和 MsgType 作为参数来接受。记得要将客户端设置为使用 NetworkClient.RegisterHandler 接收消息。此外,对于用户消息,您所用的 MsgType 的 ID 编号必须高于 MsgType.Highest。
//The code shows how to set up a message, the MsgType and how to get the connectionID. //It also shows how to send the message to the client, as well as receive it. //Attach this script to a GameObject
using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.NetworkSystem;
//Create a class for the message you send to the Client public class RegisterHostMessage : MessageBase { public string m_Name; public string m_Comment; }
public class Example : NetworkManager { RegisterHostMessage m_Message; //This is the Message Type you want to send to the Client. User messages must be above the Highest Message Type. public const short m_MessageType = MsgType.Highest + 1;
//Detect when a client connects to the Server public override void OnServerConnect(NetworkConnection connection) { //Change the message to read the Player's connection ID and a comment EditMessage("Player " + connection.connectionId, "Hi there."); //Send the new message to the Client using the Server NetworkServer.SendToClient(connection.connectionId, m_MessageType, m_Message); }
//On the Client's side, detect when it connects to a Server public override void OnClientConnect(NetworkConnection connection) { //Register and receive the message on the Client's side client.RegisterHandler(m_MessageType, ReceiveMessage); }
//Use this to edit the message to read what you want void EditMessage(string myName, string myComment) { m_Message = new RegisterHostMessage(); //Change the message name and comment to be the ones you set m_Message.m_Name = myName; m_Message.m_Comment = myComment; }
//Use this to receive the message from the Server on the Client's side public void ReceiveMessage(NetworkMessage networkMessage) { //Read the message that comes in RegisterHostMessage hostMessage = networkMessage.ReadMessage<RegisterHostMessage>(); //Store the name and comment as variables string receivedName = hostMessage.m_Name; string receivedComment = hostMessage.m_Comment;
//Output the Player name and comment Debug.Log("Player Name : " + receivedName); Debug.Log("Player Comment : " + receivedComment); } }