diff --git a/com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs b/com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs index 04e6dd4c0b..16ada9f36e 100644 --- a/com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs +++ b/com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs @@ -409,6 +409,16 @@ public NetworkPrefabHandler PrefabHandler internal NetworkConnectionManager ConnectionManager = new NetworkConnectionManager(); internal NetworkMessageManager MessageManager = null; + internal struct Override + { + private T m_Value; + public bool Overidden { get; private set; } + internal T Value { get { return Overidden ? m_Value : default(T); } + set { Overidden = true; m_Value = value; } } + }; + + internal Override PortOverride; + #if UNITY_EDITOR internal static INetworkManagerHelper NetworkManagerHelper; @@ -643,6 +653,8 @@ internal void Initialize(bool server) return; } + ParseCommandLineOptions(); + if (NetworkConfig.NetworkTransport == null) { if (NetworkLog.CurrentLogLevel <= LogLevel.Error) @@ -1085,5 +1097,32 @@ private void OnDestroy() Singleton = null; } } + + // Command line options + private const string k_OverridePortArg = "-port"; + + private string GetArg( string[] commandLineArgs, string arg ) + { + var argIndex = Array.IndexOf(commandLineArgs, arg); + if (argIndex >= 0 && argIndex < commandLineArgs.Length - 1 ) + { + return commandLineArgs[argIndex + 1]; + } + + return null; + } + + private void ParseArg(string arg, ref Override value) + { + if (GetArg(Environment.GetCommandLineArgs(), arg) is string argValue) + { + value.Value = (T)Convert.ChangeType(argValue, typeof(T)); + } + } + + private void ParseCommandLineOptions() + { + ParseArg(k_OverridePortArg, ref PortOverride); + } } } diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UNET/UNetTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UNET/UNetTransport.cs index c03f41534c..e978fdaf5c 100644 --- a/com.unity.netcode.gameobjects/Runtime/Transports/UNET/UNetTransport.cs +++ b/com.unity.netcode.gameobjects/Runtime/Transports/UNET/UNetTransport.cs @@ -199,7 +199,7 @@ public override NetworkEvent PollEvent(out ulong clientId, out ArraySegment