playerChat.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Mirror;
  4. using UnityEngine;
  5. using TMPro;
  6. using System;
  7. public class playerChat : NetworkBehaviour
  8. {
  9. [SerializeField] private GameObject chatUI = null;
  10. [SerializeField] private TMP_Text chatText = null;
  11. [SerializeField] private TMP_InputField inputField = null;
  12. private static event Action<string> OnMessage;
  13. public override void OnStartAuthority()
  14. {
  15. base.OnStartAuthority();
  16. Debug.Log("Chat has authorized");
  17. chatUI.SetActive(true);
  18. OnMessage += HandleNewMessage;
  19. }
  20. [ClientCallback]
  21. private void OnDestroy()
  22. {
  23. if (!authority) { return; }
  24. OnMessage -= HandleNewMessage;
  25. }
  26. private void HandleNewMessage(string message)
  27. {
  28. chatText.text += message;
  29. }
  30. [Client]
  31. public void Send(string message)
  32. {
  33. if (!Input.GetKeyDown(KeyCode.Return)) { return; }
  34. if (string.IsNullOrWhiteSpace(message)) { return; }
  35. CmdSendMessage(message);
  36. inputField.text = string.Empty;
  37. }
  38. [Client]
  39. public void SendBtn(){
  40. if (string.IsNullOrWhiteSpace(inputField.text)) { return; }
  41. CmdSendMessage($"{gplayAuth.userNameCloud}: "+inputField.text);
  42. inputField.text = string.Empty;
  43. }
  44. [Command]
  45. private void CmdSendMessage(string message)
  46. {
  47. // RpcHandleMessage($"[{gplayAuth.userNameCloud}]: {message}");
  48. RpcHandleMessage(message);
  49. }
  50. [ClientRpc]
  51. private void RpcHandleMessage(string message)
  52. {
  53. OnMessage?.Invoke($"\n{message}");
  54. }
  55. }