Skip to content

Commit ceb7afb

Browse files
fixed blocking yamato issue (implementation of name fetching that works outside editor)
1 parent 19ef9d0 commit ceb7afb

File tree

5 files changed

+79
-18
lines changed

5 files changed

+79
-18
lines changed

Basic/DynamicAddressablesNetworkPrefabs/Assets/Scripts/02_Server Authoritative Load All Async/ServerAuthoritativeLoadAllAsync.cs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,14 +172,19 @@ async Task PreloadDynamicPrefabOnServerAndStartLoadingOnAllClients(string guid)
172172
Debug.Log("Loading dynamic prefab on the clients...");
173173
LoadAddressableClientRpc(assetGuid);
174174

175-
// server is starting to load a prefab, update UI
176-
m_InGameUI.ClientLoadedPrefabStatusChanged(NetworkManager.ServerClientId, assetGuid.GetHashCode(), "Undefined", InGameUI.LoadStatus.Loading);
177-
178175
await DynamicPrefabLoadingUtilities.LoadDynamicPrefab(assetGuid, m_InGameUI.ArtificialDelayMilliseconds);
179176

180177
// server loaded a prefab, update UI with the loaded asset's name
181178
DynamicPrefabLoadingUtilities.TryGetLoadedGameObjectFromGuid(assetGuid, out var loadedGameObject);
182-
m_InGameUI.ClientLoadedPrefabStatusChanged(NetworkManager.ServerClientId, assetGuid.GetHashCode(), loadedGameObject.Result.name, InGameUI.LoadStatus.Loaded);
179+
180+
// every client loaded dynamic prefab, their respective ClientUIs in case they loaded first
181+
foreach (var client in m_NetworkManager.ConnectedClients.Keys)
182+
{
183+
m_InGameUI.ClientLoadedPrefabStatusChanged(client,
184+
assetGuid.GetHashCode(),
185+
loadedGameObject.Result.name,
186+
InGameUI.LoadStatus.Loading);
187+
}
183188
}
184189
}
185190

@@ -214,13 +219,20 @@ void AcknowledgeSuccessfulPrefabLoadServerRpc(int prefabHash, ServerRpcParams rp
214219
DynamicPrefabLoadingUtilities.RecordThatClientHasLoadedAPrefab(prefabHash, rpcParams.Receive.SenderClientId);
215220

216221
// a quick way to grab a matching prefab reference's name via its prefabHash
217-
var loadedPrefabName = prefabHash.ToString();
222+
var loadedPrefabName = "Undefined";
218223
foreach (var prefabReference in m_DynamicPrefabReferences)
219224
{
220225
var prefabReferenceGuid = new AddressableGUID() { Value = prefabReference.AssetGUID };
221226
if (prefabReferenceGuid.GetHashCode() == prefabHash)
222227
{
223-
loadedPrefabName = prefabReference.editorAsset.name;
228+
// found the matching prefab reference
229+
if (DynamicPrefabLoadingUtilities.LoadedDynamicPrefabResourceHandles.TryGetValue(
230+
prefabReferenceGuid,
231+
out var loadedGameObject))
232+
{
233+
// if it is loaded on the server, update the name on the ClientUI
234+
loadedPrefabName = loadedGameObject.Result.name;
235+
}
224236
break;
225237
}
226238
}

Basic/DynamicAddressablesNetworkPrefabs/Assets/Scripts/03_Server Authoritative Synchronous Spawning/ServerAuthoritativeSynchronousSpawning.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,16 @@ NetworkObject Spawn(AddressableGUID assetGuid)
220220
var obj = Instantiate(prefab.Result, position, rotation).GetComponent<NetworkObject>();
221221
obj.Spawn();
222222
Debug.Log("Spawned dynamic prefab");
223+
224+
// every client loaded dynamic prefab, their respective ClientUIs in case they loaded first
225+
foreach (var client in m_NetworkManager.ConnectedClients.Keys)
226+
{
227+
m_InGameUI.ClientLoadedPrefabStatusChanged(client,
228+
assetGuid.GetHashCode(),
229+
prefab.Result.name,
230+
InGameUI.LoadStatus.Loading);
231+
}
232+
223233
return obj;
224234
}
225235
}
@@ -257,13 +267,20 @@ void AcknowledgeSuccessfulPrefabLoadServerRpc(int prefabHash, ServerRpcParams rp
257267
rpcParams.Receive.SenderClientId);
258268

259269
// a quick way to grab a matching prefab reference's name via its prefabHash
260-
var loadedPrefabName = prefabHash.ToString();
270+
var loadedPrefabName = "Undefined";
261271
foreach (var prefabReference in m_DynamicPrefabReferences)
262272
{
263273
var prefabReferenceGuid = new AddressableGUID() { Value = prefabReference.AssetGUID };
264274
if (prefabReferenceGuid.GetHashCode() == prefabHash)
265275
{
266-
loadedPrefabName = prefabReference.editorAsset.name;
276+
// found the matching prefab reference
277+
if (DynamicPrefabLoadingUtilities.LoadedDynamicPrefabResourceHandles.TryGetValue(
278+
prefabReferenceGuid,
279+
out var loadedGameObject))
280+
{
281+
// if it is loaded on the server, update the name on the ClientUI
282+
loadedPrefabName = loadedGameObject.Result.name;
283+
}
267284
break;
268285
}
269286
}

Basic/DynamicAddressablesNetworkPrefabs/Assets/Scripts/04_Server Authoritative Network-Visibility Spawning/ServerAuthoritativeNetworkVisibilitySpawning.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,13 +280,20 @@ void AcknowledgeSuccessfulPrefabLoadServerRpc(int prefabHash, ServerRpcParams rp
280280
}
281281

282282
// a quick way to grab a matching prefab reference's name via its prefabHash
283-
var loadedPrefabName = prefabHash.ToString();
283+
var loadedPrefabName = "Undefined";
284284
foreach (var prefabReference in m_DynamicPrefabReferences)
285285
{
286286
var prefabReferenceGuid = new AddressableGUID() { Value = prefabReference.AssetGUID };
287287
if (prefabReferenceGuid.GetHashCode() == prefabHash)
288288
{
289-
loadedPrefabName = prefabReference.editorAsset.name;
289+
// found the matching prefab reference
290+
if (DynamicPrefabLoadingUtilities.LoadedDynamicPrefabResourceHandles.TryGetValue(
291+
prefabReferenceGuid,
292+
out var loadedGameObject))
293+
{
294+
// if it is loaded on the server, update the name on the ClientUI
295+
loadedPrefabName = loadedGameObject.Result.name;
296+
}
290297
break;
291298
}
292299
}

Basic/DynamicAddressablesNetworkPrefabs/Assets/Scripts/05_API Playground/APIPlayground.cs

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -226,20 +226,28 @@ async Task PreloadDynamicPrefabOnServerAndStartLoadingOnAllClients(string guid)
226226
// update UI for each client that is requested to load a certain prefab
227227
foreach (var client in m_NetworkManager.ConnectedClients.Keys)
228228
{
229-
m_InGameUI.ClientLoadedPrefabStatusChanged(client, assetGuid.GetHashCode(), "Undefined", InGameUI.LoadStatus.Loading);
229+
m_InGameUI.ClientLoadedPrefabStatusChanged(client,
230+
assetGuid.GetHashCode(),
231+
"Undefined",
232+
InGameUI.LoadStatus.Loading);
230233
}
231234

232235
Debug.Log("Loading dynamic prefab on the clients...");
233236
LoadAddressableClientRpc(assetGuid);
234-
235-
// server is starting to load a prefab, update UI
236-
m_InGameUI.ClientLoadedPrefabStatusChanged(NetworkManager.ServerClientId, assetGuid.GetHashCode(), "Undefined", InGameUI.LoadStatus.Loading);
237237

238238
await DynamicPrefabLoadingUtilities.LoadDynamicPrefab(assetGuid, m_InGameUI.ArtificialDelayMilliseconds);
239239

240240
// server loaded a prefab, update UI with the loaded asset's name
241241
DynamicPrefabLoadingUtilities.TryGetLoadedGameObjectFromGuid(assetGuid, out var loadedGameObject);
242-
m_InGameUI.ClientLoadedPrefabStatusChanged(NetworkManager.ServerClientId, assetGuid.GetHashCode(), loadedGameObject.Result.name, InGameUI.LoadStatus.Loaded);
242+
243+
// every client loaded dynamic prefab, their respective ClientUIs in case they loaded first
244+
foreach (var client in m_NetworkManager.ConnectedClients.Keys)
245+
{
246+
m_InGameUI.ClientLoadedPrefabStatusChanged(client,
247+
assetGuid.GetHashCode(),
248+
loadedGameObject.Result.name,
249+
InGameUI.LoadStatus.Loading);
250+
}
243251
}
244252
}
245253

@@ -322,6 +330,16 @@ NetworkObject Spawn(AddressableGUID assetGuid)
322330
var obj = Instantiate(prefab.Result, position, rotation).GetComponent<NetworkObject>();
323331
obj.Spawn();
324332
Debug.Log("Spawned dynamic prefab");
333+
334+
// every client loaded dynamic prefab, their respective ClientUIs in case they loaded first
335+
foreach (var client in m_NetworkManager.ConnectedClients.Keys)
336+
{
337+
m_InGameUI.ClientLoadedPrefabStatusChanged(client,
338+
assetGuid.GetHashCode(),
339+
prefab.Result.name,
340+
InGameUI.LoadStatus.Loading);
341+
}
342+
325343
return obj;
326344
}
327345
}
@@ -462,13 +480,20 @@ void AcknowledgeSuccessfulPrefabLoadServerRpc(int prefabHash, ServerRpcParams rp
462480
}
463481

464482
// a quick way to grab a matching prefab reference's name via its prefabHash
465-
var loadedPrefabName = prefabHash.ToString();
483+
var loadedPrefabName = "Undefined";
466484
foreach (var prefabReference in m_DynamicPrefabReferences)
467485
{
468486
var prefabReferenceGuid = new AddressableGUID() { Value = prefabReference.AssetGUID };
469487
if (prefabReferenceGuid.GetHashCode() == prefabHash)
470488
{
471-
loadedPrefabName = prefabReference.editorAsset.name;
489+
// found the matching prefab reference
490+
if (DynamicPrefabLoadingUtilities.LoadedDynamicPrefabResourceHandles.TryGetValue(
491+
prefabReferenceGuid,
492+
out var loadedGameObject))
493+
{
494+
// if it is loaded on the server, update the name on the ClientUI
495+
loadedPrefabName = loadedGameObject.Result.name;
496+
}
472497
break;
473498
}
474499
}

Basic/DynamicAddressablesNetworkPrefabs/ProjectSettings/ProjectSettings.asset

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ PlayerSettings:
155155
androidSupportedAspectRatio: 1
156156
androidMaxAspectRatio: 2.1
157157
applicationIdentifier:
158-
Standalone: com.Unity.DynamicAddressableNetworkPrefabs
158+
Standalone: com.Unity.DynamicAddressablesNetworkPrefabs
159159
buildNumber:
160160
Standalone: 0
161161
iPhone: 0

0 commit comments

Comments
 (0)