123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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 ?
- $"<color=red>{player.playerName}: </color> {message}" :
- $"<color=blue>{player.playerName}: </color> {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<Player>();
- // 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;
- }
- }
- }
|