class in Unity.Scripting.LifecycleManagement
Resets static variables automatically on entering or exiting Play mode with domain reload disabled.
This attribute can be applied to classes, structs, fields, properties, and events. Applying it to a class or struct ensures all static members of the class or struct are automatically reset.[AutoStaticsCleanup] resets state as follows:
static int myInt = 5; resets to 5.new, the initializer is evaluated again, so a new instance is created. For example, static MyObj obj = null; resets to null and static MyObj obj = new(); creates a fresh MyObj when Play mode starts.static readonly List<T> and static readonly Dictionary<TKey,TValue> are a special case: instead of replacing the instance, the existing collection is preserved and Clear is called. Non-readonly static lists and dictionaries are reset normally by reapplying their initializer.For more information, refer to Enter Play mode with domain reload disabled in the manual.
using Unity.Scripting.LifecycleManagement; using UnityEditor.Scripting.LifecycleManagement; using UnityEngine; public partial class MyCounterClass : MonoBehaviour { [AutoStaticsCleanup] public static int cleanedUpCounter = 0;
void Start() { Debug.Log(cleanedUpCounter); // Counter value is reset each time entering Play Mode cleanedUpCounter++; } }