Advertisement
Nicklaj

runtimescriptableobject.cs

Mar 20th, 2025
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.19 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. namespace Nicklaj.SimpleSOAP
  6. {
  7.     public abstract class RuntimeScriptableObject : ScriptableObject
  8.     {
  9.         static readonly List<RuntimeScriptableObject> Instances = new();
  10.         public ResetOn ResetOn = ResetOn.SceneLoaded;
  11.  
  12.         void OnEnable() => Instances.Add(this);
  13.         void OnDisable() => Instances.Remove(this);
  14.         protected abstract void OnReset();
  15.  
  16.         [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
  17.         static void ResetAllInstancesOnSceneLoad()
  18.         {
  19.             foreach (RuntimeScriptableObject instance in Instances)
  20.             {
  21.                 if (instance.ResetOn != ResetOn.SceneLoaded) continue;
  22.                 instance.OnReset();
  23.             }
  24.         }
  25.  
  26.         [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
  27.         static void ResetAllInstancesOnApplicationStart()
  28.         {
  29.             foreach (RuntimeScriptableObject instance in Instances)
  30.             {
  31.                 if (instance.ResetOn != ResetOn.ApplicationStart) continue;
  32.                 instance.OnReset();
  33.             }
  34.         }
  35.     }
  36.  
  37. }
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement