private void Start() { //get ip address since we aren't using NetworkManager and cannot use that singleton: ipAddress = "::ffff:" + IPManager.GetIP(ADDRESSFAM.IPv4); //setup: broadcastPort = broadcastingPort; //set device id: broadcastData = ServerPort.ToString(); if (string.IsNullOrEmpty(customDeviceId)) { broadcastData += "_" + DeviceId; } else { broadcastData += "_" + customDeviceId; } //HACK: this is a fix for the broadcastData bug where Unity will combine different //data if the length is different because they internally reuse this object broadcastData += "~!~"; Init(); //configurations: ConnectionConfig config = new ConnectionConfig(); PrimaryChannel = config.AddChannel(primaryQualityOfService); SecondaryChannel = config.AddChannel(secondaryQualityOfService); config.InitialBandwidth = initialBandwidth; HostTopology topology = new HostTopology(config, maxConnections); _server.Listen(ServerPort, topology); //event hooks: _server.OnConnection += HandleConnect; _server.OnDisconnection += HandleDisconnect; _server.RegisterHandler((short)NetworkMsg.FloatMsg, HandleFloat); _server.RegisterHandler((short)NetworkMsg.FloatArrayMsg, HandleFloatArray); _server.RegisterHandler((short)NetworkMsg.IntMsg, HandleInt); _server.RegisterHandler((short)NetworkMsg.IntArrayMsg, HandleIntArray); _server.RegisterHandler((short)NetworkMsg.Vector2Msg, HandleVector2); _server.RegisterHandler((short)NetworkMsg.Vector2ArrayMsg, HandleVector2Array); _server.RegisterHandler((short)NetworkMsg.Vector3Msg, HandleVector3); _server.RegisterHandler((short)NetworkMsg.Vector3ArrayMsg, HandleVector3Array); _server.RegisterHandler((short)NetworkMsg.QuaternionMsg, HandleQuaternion); _server.RegisterHandler((short)NetworkMsg.QuaternionArrayMsg, HandleQuaternionArray); _server.RegisterHandler((short)NetworkMsg.Vector4Msg, HandleVector4); _server.RegisterHandler((short)NetworkMsg.Vector4ArrayMsg, HandleVector4Array); _server.RegisterHandler((short)NetworkMsg.RectMsg, HandleRect); _server.RegisterHandler((short)NetworkMsg.RectArrayMsg, HandleRectArray); _server.RegisterHandler((short)NetworkMsg.StringMsg, HandleString); _server.RegisterHandler((short)NetworkMsg.StringArrayMsg, HandleStringArray); _server.RegisterHandler((short)NetworkMsg.ByteMsg, HandleByte); _server.RegisterHandler((short)NetworkMsg.ByteArrayMsg, HandleByteArray); _server.RegisterHandler((short)NetworkMsg.ColorMsg, HandleColor); _server.RegisterHandler((short)NetworkMsg.ColorArrayMsg, HandleColorArray); _server.RegisterHandler((short)NetworkMsg.Color32Msg, HandleColor32); _server.RegisterHandler((short)NetworkMsg.Color32ArrayMsg, HandleColor32Array); _server.RegisterHandler((short)NetworkMsg.BoolMsg, HandleBool); _server.RegisterHandler((short)NetworkMsg.BoolArrayMsg, HandleBoolArray); _server.RegisterHandler((short)NetworkMsg.Matrix4x4Msg, HandleMatrix4x4); _server.RegisterHandler((short)NetworkMsg.Matrix4x4ArrayMsg, HandleMatrix4x4Array); //dont destroy: transform.parent = null; DontDestroyOnLoad(gameObject); }