Skip to content

Commit ba7cff2

Browse files
committed
fix: PrefabHash not being saved in Unity >= 2018.3
1 parent 6969fb6 commit ba7cff2

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

MLAPI/Core/NetworkedObject.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,15 @@ namespace MLAPI
2424
public sealed class NetworkedObject : MonoBehaviour
2525
{
2626
private void OnValidate()
27+
{
28+
// Set this so the hash can be serialized on Scene objects. For prefabs, they are generated at runtime.
29+
ValidateHash();
30+
}
31+
32+
internal void ValidateHash()
2733
{
2834
if (string.IsNullOrEmpty(PrefabHashGenerator))
2935
{
30-
PrefabHash = 0;
31-
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogWarning("The NetworkedObject " + gameObject.name + " does not have a PrefabHashGenerator. It has been set to the gameObject name");
3236
PrefabHashGenerator = gameObject.name;
3337
}
3438

MLAPI/Core/NetworkingManager.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,10 @@ private void OnValidate()
252252
NetworkConfig.RegisteredScenes.Add(SceneManager.GetActiveScene().name);
253253
}
254254

255+
for (int i = 0; i < NetworkConfig.NetworkedPrefabs.Count; i++)
256+
{
257+
NetworkConfig.NetworkedPrefabs[i].Prefab.GetComponent<NetworkedObject>().ValidateHash();
258+
}
255259

256260
// TODO: Show which two prefab generators that collide
257261
HashSet<ulong> hashes = new HashSet<ulong>();
@@ -348,6 +352,11 @@ private void Init(bool server)
348352
}
349353

350354
NetworkSceneManager.SetCurrentSceneIndex();
355+
356+
for (int i = 0; i < NetworkConfig.NetworkedPrefabs.Count; i++)
357+
{
358+
NetworkConfig.NetworkedPrefabs[i].Prefab.GetComponent<NetworkedObject>().ValidateHash();
359+
}
351360

352361
NetworkConfig.NetworkTransport.Init();
353362
}

0 commit comments

Comments
 (0)