using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; namespace Multiplayer { public class ClientManager : MonoBehaviour { #region Inspector Variables [Header("Client Settings")] [Tooltip("Address server is hosted on")] [SerializeField] private string ServerAddress = "127.0.0.1"; [Tooltip("Port to connect to server on")] [SerializeField] private int Port = 4444; [Tooltip("Connects client to server on awake")] [SerializeField] private bool ConnectOnStart = false; #endregion //Returns if client is current connected to a server public bool IsConnected { get; private set; } //UNET client class which connects to the server; private NetworkClient uNetClient; /// /// Call to connect client to host /// [ContextMenu("Start Client")] public void StartClient() { StartClient(ServerAddress, Port); } /// /// Call to connect the client to the host /// /// Server Address to connect to /// Port to connect on public void StartClient(string ServerAddress, int Port) { //If client is already connected to don't continue if (IsConnected) { Debug.Log("Client already connected to a server. Client needs to disconnect before it can connect to a server"); return; } Debug.Log("Attempting to connect to: '" + ServerAddress + "' on port : '" + Port + "'"); uNetClient = new NetworkClient(); RegisterHandlers(uNetClient); uNetClient.Configure(ChannelConfig.DefaultTopology()); uNetClient.Connect(ServerAddress, Port); } /// /// Helper function which sets up all necessary handlers for message types /// /// private void RegisterHandlers(NetworkClient client) { client.RegisterHandler(MsgType.Connect, OnConnected); client.RegisterHandler(MsgType.Disconnect, OnDisconnected); } private void OnConnected(NetworkMessage msg) { IsConnected = true; Debug.Log("Successfully connected to server"); Debug.Log("Connection ID: " + msg.conn.connectionId); } private void OnDisconnected(NetworkMessage msg) { IsConnected = false; Debug.Log("Disconnected from Server"); } } }