Skip to content

Commit 85a1f50

Browse files
refactor: remove check on internal CreateAndSpawnPlayer method (#3914)
* Updates on internal CreateAndSpawnPlayer: - Move out the `if DA` check from the function - Early return - Add a LogWarning if no playerPrefab was fetched --------- Co-authored-by: Emma <emma.mcmillan@unity3d.com>
1 parent bf40c5d commit 85a1f50

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

com.unity.netcode.gameobjects/Runtime/Connection/NetworkConnectionManager.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,18 +1113,20 @@ private void SendConnectionApprovedMessage(ulong approvedClientId)
11131113
/// </summary>
11141114
internal void CreateAndSpawnPlayer(ulong ownerId)
11151115
{
1116-
if (NetworkManager.DistributedAuthorityMode && NetworkManager.AutoSpawnPlayerPrefabClientSide)
1116+
var playerPrefab = NetworkManager.FetchLocalPlayerPrefabToSpawn();
1117+
if (playerPrefab == null)
11171118
{
1118-
var playerPrefab = NetworkManager.FetchLocalPlayerPrefabToSpawn();
1119-
if (playerPrefab != null)
1119+
if (NetworkManager.LogLevel <= LogLevel.Developer)
11201120
{
1121-
var globalObjectIdHash = playerPrefab.GetComponent<NetworkObject>().GlobalObjectIdHash;
1122-
var networkObject = NetworkManager.SpawnManager.GetNetworkObjectToSpawn(globalObjectIdHash, ownerId, playerPrefab.transform.position, playerPrefab.transform.rotation);
1123-
networkObject.IsSceneObject = false;
1124-
networkObject.NetworkManagerOwner = NetworkManager;
1125-
networkObject.SpawnAsPlayerObject(ownerId, networkObject.DestroyWithScene);
1121+
NetworkLog.LogWarning("Could not fetch a local player to spawn. Ensure PlayerPrefab is set in NetcodeConfig.");
11261122
}
1123+
return;
11271124
}
1125+
var globalObjectIdHash = playerPrefab.GetComponent<NetworkObject>().GlobalObjectIdHash;
1126+
var networkObject = NetworkManager.SpawnManager.GetNetworkObjectToSpawn(globalObjectIdHash, ownerId, playerPrefab.transform.position, playerPrefab.transform.rotation);
1127+
networkObject.IsSceneObject = false;
1128+
networkObject.NetworkManagerOwner = NetworkManager;
1129+
networkObject.SpawnAsPlayerObject(ownerId, networkObject.DestroyWithScene);
11281130
}
11291131

11301132
/// <summary>

com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ public void Handle(ref NetworkContext context)
347347
NetworkObject.Deserialize(serializedObject, m_ReceivedSceneObjectData, networkManager);
348348
}
349349

350-
if (networkManager.AutoSpawnPlayerPrefabClientSide)
350+
if (networkManager.DistributedAuthorityMode && networkManager.AutoSpawnPlayerPrefabClientSide)
351351
{
352352
networkManager.ConnectionManager.CreateAndSpawnPlayer(OwnerClientId);
353353
}

0 commit comments

Comments
 (0)