Here's my NetworkManager script,
using Mirror;
using kcp2k;
using UnityEngine;
using System.Net;
public class Net_Manager : NetworkManager
{
private KcpTransport kcpTransport;
private IPAddress currentIP;
private ushort currentPort;
public override void Awake()
{
base.Awake();
kcpTransport = GetComponent<KcpTransport>();
}
public void CreateRoom()
{
kcpTransport.Port = Room_Port();
networkAddress = Room_IP();
currentIP = StringToIPAddress(networkAddress);
currentPort = kcpTransport.Port;
StartHost();
}
public void JoinRoom()
{
networkAddress = Room_IP();
kcpTransport.Port = Room_Port();
StartClient();
}
public void LeaveRoom()
{
if (NetworkServer.active && NetworkClient.isConnected)
{
StopHost();
}
else
{
StopClient();
}
}
public override void OnStartServer()
{
base.OnStartServer();
UI_Manager.instance.SetIPAndPort(currentIP, currentPort);
}
private string Room_IP()
{
return UI_Manager.instance.GetRoomIP();
}
private ushort Room_Port()
{
string rawPort = UI_Manager.instance.GetRoomPort();
if (ushort.TryParse(rawPort, out ushort port))
{
return port;
}
else
{
return 7777;
}
}
private IPAddress StringToIPAddress(string str)
{
if (str.ToLower() == "localhost")
{
return IPAddress.Loopback;
}
if (IPAddress.TryParse(str, out IPAddress ipAddress))
{
return ipAddress;
}
else
{
return null;
}
}
}