Hi everybody,
I’ve used this code but It is not working so anyone help me?
It broken in this line and it shows nullobject:
NetworkManager.singleton.client.Send((short) MyMessages.MyMessageTypes.CHAT_MESSAGE, msg);
Here is my code:
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.Networking;
using UnityEngine.Networking.NetworkSystem;
public class Chat : NetworkManager {
public class MyMessages
{
public enum MyMessageTypes
{
CHAT_MESSAGE = 1000
}
public class ChatMessage : MessageBase
{
public string message;
}
}
public List<string> chatHistory = new List<string>();
//Keeps track of current message
private string currentMessage = string.Empty;
// hook into NetworkManager client setup process
public override void OnStartClient(NetworkClient mClient)
{
base.OnStartClient(mClient); // base implementation is currently empty
mClient.RegisterHandler((short)MyMessages.MyMessageTypes.CHAT_MESSAGE, OnClientChatMessage);
}
// hook into NetManagers server setup process
public override void OnStartServer()
{
base.OnStartServer(); //base is empty
NetworkServer.RegisterHandler((short)MyMessages.MyMessageTypes.CHAT_MESSAGE, OnServerChatMessage);
}
private void OnGUI() {
GUILayout.BeginHorizontal(GUILayout.Width(250));
currentMessage = GUILayout.TextField(currentMessage);
if (GUILayout.Button("Send"))
{
if (!string.IsNullOrEmpty(currentMessage))
{
Debug.Log("a: "+ currentMessage);
MyMessages.ChatMessage msg = new MyMessages.ChatMessage();
msg.message = currentMessage;
// this.client.Send((short) MyMessages.MyMessageTypes.CHAT_MESSAGE, msg);
NetworkManager.singleton.client.Send((short) MyMessages.MyMessageTypes.CHAT_MESSAGE, msg);
currentMessage = string.Empty;
}
}
foreach (var msg in chatHistory)
{
GUILayout.Label(msg);
}
GUILayout.EndHorizontal();
}
private void OnServerChatMessage(NetworkMessage netMsg)
{
var msg = netMsg.ReadMessage<StringMessage>();
Debug.Log("New chat message on server: " + msg.value);
MyMessages.ChatMessage chat = new MyMessages.ChatMessage();
chat.message = msg.value;
if (msg.value == "Dam this game sucks")
{
return;
}
else
{
NetworkServer.SendToAll((short)MyMessages.MyMessageTypes.CHAT_MESSAGE, chat);
}
}
private void OnClientChatMessage(NetworkMessage netMsg)
{
var msg = netMsg.ReadMessage<StringMessage>();
Debug.Log("New chat message on client: " + msg.value);
chatHistory.Add(msg.value);
}
}
Thanks.