diff --git a/com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs b/com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs index e22d2c4063..3dc87e55bb 100644 --- a/com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs +++ b/com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs @@ -380,8 +380,20 @@ public static void NetworkHide(List networkObjects, ulong clientI } } + private bool m_ApplicationQuitting = false; + + private void OnApplicationQuit() + { + m_ApplicationQuitting = true; + } + private void OnDestroy() { + if (m_ApplicationQuitting) + { + return; + } + if (NetworkManager != null && NetworkManager.IsListening && NetworkManager.IsServer == false && IsSpawned) { throw new NotServerException($"Destroy a spawned {nameof(NetworkObject)} on a non-host client is not valid. Call {nameof(Destroy)} or {nameof(Despawn)} on the server/host instead."); diff --git a/com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs b/com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs index 41dbb9b68b..500a9d8c17 100644 --- a/com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs +++ b/com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs @@ -685,8 +685,12 @@ internal void OnDespawnObject(NetworkObject networkObject, bool destroyGameObjec } } - var gobj = networkObject.gameObject; + if (SpawnedObjects.Remove(networkObject.NetworkObjectId)) + { + SpawnedObjectsList.Remove(networkObject); + } + var gobj = networkObject.gameObject; if (destroyGameObject && gobj != null) { if (NetworkManager.PrefabHandler.ContainsHandler(networkObject)) @@ -698,14 +702,6 @@ internal void OnDespawnObject(NetworkObject networkObject, bool destroyGameObjec UnityEngine.Object.Destroy(gobj); } } - - // for some reason, we can get down here and SpawnedObjects for this - // networkId will no longer be here, even as we check this at the start - // of the function - if (SpawnedObjects.Remove(networkObject.NetworkObjectId)) - { - SpawnedObjectsList.Remove(networkObject); - } } } }