ChatNetworkManager.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using UnityEngine;
  2. namespace Mirror.Examples.Chat
  3. {
  4. [AddComponentMenu("")]
  5. public class ChatNetworkManager : NetworkManager
  6. {
  7. [Header("Chat GUI")]
  8. public ChatWindow chatWindow;
  9. // Set by UI element UsernameInput OnValueChanged
  10. public string PlayerName { get; set; }
  11. // Called by UI element NetworkAddressInput.OnValueChanged
  12. public void SetHostname(string hostname)
  13. {
  14. networkAddress = hostname;
  15. }
  16. public struct CreatePlayerMessage : NetworkMessage
  17. {
  18. public string name;
  19. }
  20. public override void OnStartServer()
  21. {
  22. base.OnStartServer();
  23. NetworkServer.RegisterHandler<CreatePlayerMessage>(OnCreatePlayer);
  24. }
  25. public override void OnClientConnect(NetworkConnection conn)
  26. {
  27. base.OnClientConnect(conn);
  28. // tell the server to create a player with this name
  29. conn.Send(new CreatePlayerMessage { name = PlayerName });
  30. }
  31. void OnCreatePlayer(NetworkConnection connection, CreatePlayerMessage createPlayerMessage)
  32. {
  33. // create a gameobject using the name supplied by client
  34. GameObject playergo = Instantiate(playerPrefab);
  35. playergo.GetComponent<Player>().playerName = createPlayerMessage.name;
  36. // set it as the player
  37. NetworkServer.AddPlayerForConnection(connection, playergo);
  38. chatWindow.gameObject.SetActive(true);
  39. }
  40. }
  41. }