connectionId | Client connection ID. |
msg | Message struct to send. |
msgType | Message type. |
Send a message to the client which owns the given connection ID.
It accepts the connection ID as a parameter as well as a message and MsgType. Remember to set the client up for receiving the messages by using NetworkClient.RegisterHandler. Also, for user messages you must use a MsgType with a higher ID number than 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); } }