Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions com.unity.netcode.gameobjects/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Additional documentation and release notes are available at [Multiplayer Documen

### Fixed

- Fixed issue where an attachable could log an error upon being de-spawned during shutdown. (#3895)

### Security

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ internal void ForceDetach()
/// <inheritdoc/>
public override void OnNetworkPreDespawn()
{
if (AutoDetach.HasFlag(AutoDetachTypes.OnDespawn))
if (NetworkManager.ShutdownInProgress || AutoDetach.HasFlag(AutoDetachTypes.OnDespawn))
{
ForceDetach();
}
Expand Down Expand Up @@ -474,10 +474,11 @@ internal void InternalDetach()
/// </summary>
public void Detach()
{
if (!gameObject)
if (!gameObject || NetworkObject == null || NetworkManager == null || NetworkManager.ShutdownInProgress)
{
return;
}

if (!IsSpawned)
{
NetworkLog.LogError($"[{name}][Detach][Not Spawned] Cannot detach if not spawned!");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public IEnumerator WhenOwnershipIsChanged_OwnershipValuesUpdateCorrectly()
Assert.IsFalse(serverBehaviour.IsOwnedByServer);
Assert.AreEqual(m_ClientNetworkManagers[0].LocalClientId, serverBehaviour.OwnerClientId);

var clientObject = FindObjects.ByType<NetworkObject>(orderByIdentifier: true).Where((obj) => obj.NetworkManagerOwner == m_ClientNetworkManagers[0]).FirstOrDefault();
var clientObject = m_ClientNetworkManagers[0].SpawnManager.SpawnedObjects.ContainsKey(serverObject.NetworkObjectId) ? m_ClientNetworkManagers[0].SpawnManager.SpawnedObjects[serverObject.NetworkObjectId] : null;

Assert.IsNotNull(clientObject);
Assert.IsTrue(clientObject.IsOwner);
Expand Down