using System.Collections;
using UnityEngine;
using UnityEngine.UI;
namespace Mirror.Examples.Chat
{
public class ChatWindow : MonoBehaviour
{
public InputField chatMessage;
public Text chatHistory;
public Scrollbar scrollbar;
public void Awake()
{
Player.OnMessage += OnPlayerMessage;
}
void OnPlayerMessage(Player player, string message)
{
string prettyMessage = player.isLocalPlayer ?
$"{player.playerName}: {message}" :
$"{player.playerName}: {message}";
AppendMessage(prettyMessage);
Debug.Log(message);
}
// Called by UI element SendButton.OnClick
public void OnSend()
{
if (chatMessage.text.Trim() == "")
return;
// get our player
Player player = NetworkClient.connection.identity.GetComponent();
// send a message
player.CmdSend(chatMessage.text.Trim());
chatMessage.text = "";
}
internal void AppendMessage(string message)
{
StartCoroutine(AppendAndScroll(message));
}
IEnumerator AppendAndScroll(string message)
{
chatHistory.text += message + "\n";
// it takes 2 frames for the UI to update ?!?!
yield return null;
yield return null;
// slam the scrollbar down
scrollbar.value = 0;
}
}
}