protected override void OnDestroy() { if (discoveryClient != null) { discoveryClient.RemoveListener(discoveryClientAdapter); discoveryClient.Dispose(); discoveryClient = null; if (discoveryClientAdapter != null) { discoveryClientAdapter.Dispose(); discoveryClientAdapter = null; } } if (SessionUsersTracker != null) { SessionUsersTracker.Dispose(); SessionUsersTracker = null; } if (SessionsTracker != null) { SessionsTracker.Dispose(); SessionsTracker = null; } if (Connection != null) { Connection.RemoveListener((byte)MessageID.StatusOnly, networkConnectionAdapter); Connection.Dispose(); if (networkConnectionAdapter != null) { networkConnectionAdapter.Dispose(); networkConnectionAdapter = null; } } if (Manager != null) { // Force a disconnection so that we can stop and start Unity without connections hanging around. Manager.GetPairedConnection().Disconnect(); Manager.GetServerConnection().Disconnect(); Manager.Dispose(); Manager = null; } // Forces a garbage collection to try to clean up any additional reference to SWIG-wrapped objects. GC.Collect(); base.OnDestroy(); }
private void AutoDiscoverInit() { if (ShowDetailedLogs) { Debug.Log("Looking for servers..."); } discoveryClientAdapter = new DiscoveryClientAdapter(); discoveryClientAdapter.DiscoveredEvent += OnSystemDiscovered; discoveryClient = DiscoveryClient.Create(); discoveryClient.AddListener(discoveryClientAdapter); // Start Finding Server. isTryingToFindServer = true; }