diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs index 034aa56eff..3d5a85ed81 100644 --- a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs +++ b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs @@ -177,6 +177,16 @@ public bool UseWebSockets set => m_UseWebSockets = value; } + [Tooltip("Per default the client/server will communicate over UDP. Set to true to communicate locally using IPC.")] + [SerializeField] + private bool m_UseIPC = false; + + public bool UseIPC + { + get => m_UseIPC; + set => m_UseIPC = value; + } + /// /// Per default the client/server communication will not be encrypted. Select true to enable DTLS for UDP and TLS for Websocket. /// @@ -1576,9 +1586,9 @@ public void CreateDriver(UnityTransport transport, out NetworkDriver driver, heartbeatTimeoutMS: transport.m_HeartbeatTimeoutMS); #if UNITY_WEBGL && !UNITY_EDITOR - if (NetworkManager.IsServer && m_ProtocolType != ProtocolType.RelayUnityTransport) + if (NetworkManager.IsServer && m_ProtocolType != ProtocolType.RelayUnityTransport && m_UseIPC == false) { - throw new Exception("WebGL as a server is not supported by Unity Transport, outside the Editor."); + throw new Exception("WebGL as a server is not supported by Unity Transport, outside the Editor. Use IPC or Relay instead."); } #endif @@ -1642,7 +1652,11 @@ public void CreateDriver(UnityTransport transport, out NetworkDriver driver, #endif #if UTP_TRANSPORT_2_0_ABOVE - if (m_UseWebSockets) + if (m_UseIPC) + { + driver = NetworkDriver.Create(new IPCNetworkInterface(), m_NetworkSettings); + } + else if (m_UseWebSockets) { driver = NetworkDriver.Create(new WebSocketNetworkInterface(), m_NetworkSettings); }