From 5e06bf1e6f28a3217e53375af93e0a49b7a19a28 Mon Sep 17 00:00:00 2001 From: PitouGames Date: Sun, 30 Apr 2023 23:36:04 +0200 Subject: [PATCH] fix: avoid throwing exception when using NetworkList without a NetworkManager (#2539) --- com.unity.netcode.gameobjects/CHANGELOG.md | 1 + .../NetworkVariable/Collections/NetworkList.cs | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/com.unity.netcode.gameobjects/CHANGELOG.md b/com.unity.netcode.gameobjects/CHANGELOG.md index 3d8cc3cc01..db47804d3e 100644 --- a/com.unity.netcode.gameobjects/CHANGELOG.md +++ b/com.unity.netcode.gameobjects/CHANGELOG.md @@ -17,6 +17,7 @@ Additional documentation and release notes are available at [Multiplayer Documen - Fixed issue where `NetworkVariable`s on a `NetworkBehaviour` could fail to synchronize changes if one has `NetworkVariableUpdateTraits` set and is dirty but is not ready to send. (#3465) - Fixed issue where when a client changes ownership via RPC the `NetworkBehaviour.OnOwnershipChanged` can result in identical previous and current owner identifiers. (#3434) +- Fixed `NullReferenceException` on `NetworkList` when used without a NetworkManager in scene. (#2539) ### Changed diff --git a/com.unity.netcode.gameobjects/Runtime/NetworkVariable/Collections/NetworkList.cs b/com.unity.netcode.gameobjects/Runtime/NetworkVariable/Collections/NetworkList.cs index eaf06bbb67..163daed1f3 100644 --- a/com.unity.netcode.gameobjects/Runtime/NetworkVariable/Collections/NetworkList.cs +++ b/com.unity.netcode.gameobjects/Runtime/NetworkVariable/Collections/NetworkList.cs @@ -425,7 +425,7 @@ public IEnumerator GetEnumerator() public void Add(T item) { // check write permissions - if (!CanClientWrite(m_NetworkBehaviour.NetworkManager.LocalClientId)) + if (m_NetworkManager && !CanClientWrite(m_NetworkManager.LocalClientId)) { LogWritePermissionError(); return; @@ -452,7 +452,7 @@ public void Add(T item) public void Clear() { // check write permissions - if (!CanClientWrite(m_NetworkBehaviour.NetworkManager.LocalClientId)) + if (m_NetworkManager && !CanClientWrite(m_NetworkManager.LocalClientId)) { LogWritePermissionError(); return; @@ -490,7 +490,7 @@ public bool Contains(T item) public bool Remove(T item) { // check write permissions - if (!CanClientWrite(m_NetworkBehaviour.NetworkManager.LocalClientId)) + if (m_NetworkManager && !CanClientWrite(m_NetworkManager.LocalClientId)) { LogWritePermissionError(); return false; @@ -539,7 +539,7 @@ public int IndexOf(T item) public void Insert(int index, T item) { // check write permissions - if (!CanClientWrite(m_NetworkBehaviour.NetworkManager.LocalClientId)) + if (m_NetworkManager && !CanClientWrite(m_NetworkManager.LocalClientId)) { LogWritePermissionError(); return; @@ -575,7 +575,7 @@ public void Insert(int index, T item) public void RemoveAt(int index) { // check write permissions - if (!CanClientWrite(m_NetworkBehaviour.NetworkManager.LocalClientId)) + if (m_NetworkManager && !CanClientWrite(m_NetworkManager.LocalClientId)) { LogWritePermissionError(); return; @@ -608,7 +608,7 @@ public T this[int index] set { // check write permissions - if (!CanClientWrite(m_NetworkBehaviour.NetworkManager.LocalClientId)) + if (m_NetworkManager && !CanClientWrite(m_NetworkManager.LocalClientId)) { LogWritePermissionError(); return;