diff --git a/com.unity.multiplayer.mlapi/Runtime/Serialization/NetworkWriter.cs b/com.unity.multiplayer.mlapi/Runtime/Serialization/NetworkWriter.cs index 591b7b1940..ef160b1e8f 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Serialization/NetworkWriter.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Serialization/NetworkWriter.cs @@ -210,7 +210,7 @@ public void WriteObjectPacked(object value) { if (!((NetworkObject)value).IsSpawned) { - throw new ArgumentException($"{nameof(NetworkWriter)} cannot write {nameof(NetworkObject)} types that are not spawned. {nameof(GameObject)}: {((GameObject)value).name}"); + throw new ArgumentException($"{nameof(NetworkWriter)} cannot write {nameof(NetworkObject)} types that are not spawned. {nameof(GameObject)}: {((NetworkObject)value).gameObject.name}"); } WriteUInt64Packed(((NetworkObject)value).NetworkObjectId); @@ -220,7 +220,7 @@ public void WriteObjectPacked(object value) { if (!((NetworkBehaviour)value).HasNetworkObject || !((NetworkBehaviour)value).NetworkObject.IsSpawned) { - throw new ArgumentException($"{nameof(NetworkWriter)} cannot write {nameof(NetworkBehaviour)} types that are not spawned. {nameof(GameObject)}: {((GameObject)value).name}"); + throw new ArgumentException($"{nameof(NetworkWriter)} cannot write {nameof(NetworkBehaviour)} types that are not spawned. {nameof(GameObject)}: {((NetworkBehaviour)value).gameObject.name}"); } WriteUInt64Packed(((NetworkBehaviour)value).NetworkObjectId); diff --git a/com.unity.multiplayer.mlapi/Tests/Editor/NetworkSerializerTests.cs b/com.unity.multiplayer.mlapi/Tests/Editor/NetworkSerializerTests.cs index d514ffbce4..88a14c153b 100644 --- a/com.unity.multiplayer.mlapi/Tests/Editor/NetworkSerializerTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Editor/NetworkSerializerTests.cs @@ -8,6 +8,29 @@ namespace MLAPI.EditorTests { public class NetworkSerializerTests { + [Test] + public void SerializeUnspawnedNetworkObject() + { + var gameObject = new GameObject(nameof(SerializeUnspawnedNetworkObject)); + var networkObject = gameObject.AddComponent(); + + try + { + using (var outStream = PooledNetworkBuffer.Get()) + using (var outWriter = PooledNetworkWriter.Get(outStream)) + { + outWriter.WriteObjectPacked(networkObject); + } + + // we expect the exception below + Assert.Fail(); + } + catch(ArgumentException exception) + { + Assert.True(exception.Message.IndexOf("NetworkWriter cannot write NetworkObject types that are not spawned") != -1); + } + } + [Test] public void SerializeBool() {