Skip to content

Commit 07f0e54

Browse files
committed
Implement ResetStaticFields for Unity compatibility
Added a method to reset static fields to prevent data persistence in Unity. Signed-off-by: Vanessa Vinther <7903603+ImDreamerDev@users.noreply.github.com>
1 parent fae1093 commit 07f0e54

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

sdks/csharp/src/Table.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.IO;
55
using System.Linq;
66
using System.Threading.Tasks;
7+
using UnityEngine;
78
using SpacetimeDB.BSATN;
89
using SpacetimeDB.ClientApi;
910
using SpacetimeDB.EventHandling;
@@ -242,6 +243,21 @@ private static IReadWrite<Row> Serializer
242243
}
243244
}
244245

246+
/// <summary>
247+
/// Resets the static instance to prevent data persistence when Enter Play Mode Options (Disable Domain Reloading) is active.
248+
/// RuntimeInitializeOnLoadMethod is used since it is supported in older versions of Unity.
249+
/// AutoStaticsCleanup and NoAutoStaticsCleanup is only supported in Unity 6+
250+
/// </summary>
251+
/// <remarks>
252+
/// See the <see href="https://docs.unity3d.com/6000.5/Documentation/Manual/domain-reloading.html">Unity Domain Reloading Manual</see>
253+
/// and the <see href="https://docs.unity3d.com/6000.5/Documentation/ScriptReference/RuntimeInitializeOnLoadMethodAttribute.html">RuntimeInitializeOnLoadMethodAttribute API Docs</see> for details.
254+
/// </remarks>
255+
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
256+
private static void ResetStaticFields()
257+
{
258+
_serializer = null;
259+
}
260+
245261
// The function to use for decoding a type value.
246262
Row DecodeValue(BinaryReader reader) => Serializer.Read(reader);
247263

0 commit comments

Comments
 (0)