diff --git a/com.unity.netcode.gameobjects/Runtime/NetworkVariable/NetworkVariable.cs b/com.unity.netcode.gameobjects/Runtime/NetworkVariable/NetworkVariable.cs index 16ca42ad91..a030884a09 100644 --- a/com.unity.netcode.gameobjects/Runtime/NetworkVariable/NetworkVariable.cs +++ b/com.unity.netcode.gameobjects/Runtime/NetworkVariable/NetworkVariable.cs @@ -181,19 +181,26 @@ public override void Dispose() } m_IsDisposed = true; + // Dispose the internal value if (m_InternalValue is IDisposable internalValueDisposable) { internalValueDisposable.Dispose(); } - m_InternalValue = default; + + // Dispose the internal original value + if (m_InternalOriginalValue is IDisposable internalOriginalValueDisposable) + { + internalOriginalValueDisposable.Dispose(); + } m_InternalOriginalValue = default; + + // Dispose the previous value if there is one if (m_HasPreviousValue && m_PreviousValue is IDisposable previousValueDisposable) { m_HasPreviousValue = false; previousValueDisposable.Dispose(); } - m_PreviousValue = default; base.Dispose();