A game about forced loneliness, made by TACStudios
1using UnityEngine; 2 3namespace Unity.VisualScripting 4{ 5 public static class ApplicationVariables 6 { 7 public const string assetPath = "ApplicationVariables"; 8 9 private static VariablesAsset _asset; 10 11 public static VariablesAsset asset 12 { 13 get 14 { 15 if (_asset == null) 16 { 17 Load(); 18 } 19 20 return _asset; 21 } 22 } 23 24 public static void Load() 25 { 26 _asset = Resources.Load<VariablesAsset>(assetPath) ?? ScriptableObject.CreateInstance<VariablesAsset>(); 27 } 28 29 public static VariableDeclarations runtime { get; private set; } 30 31 public static VariableDeclarations initial => asset.declarations; 32 33 public static VariableDeclarations current => Application.isPlaying ? runtime : initial; 34 35 public static void OnEnterEditMode() 36 { 37 DestroyRuntimeDeclarations(); // Required because assemblies don't reload on play mode exit 38 } 39 40 public static void OnExitEditMode() { } 41 42 internal static void OnEnterPlayMode() 43 { 44 CreateRuntimeDeclarations(); 45 } 46 47 internal static void OnExitPlayMode() { } 48 49 private static void CreateRuntimeDeclarations() 50 { 51 runtime = asset.declarations.CloneViaFakeSerialization(); 52 } 53 54 private static void DestroyRuntimeDeclarations() 55 { 56 runtime = null; 57 } 58 } 59}