From 306c2f85c3082b05476b4725f2010b0ef92d9bd7 Mon Sep 17 00:00:00 2001 From: kabix09 Date: Sun, 19 Jun 2022 02:56:04 +0200 Subject: [PATCH] Add quest saving manager system for user tasks Add base auto saving when change scene --- Assembly-CSharp.csproj | 2 +- Assets/Scenes/CaveEntrance.unity | 57 ++++++++ Assets/Scenes/SampleScene.unity | 79 ++++++++++- Assets/Scripts/DoorBehaviour.cs | 6 + Assets/Scripts/SaveController.cs | 5 + Assets/Scripts/SaveSystem.cs | 7 +- Assets/Scripts/SceneManager/SaveTask.meta | 8 ++ .../SceneManager/SaveTask/SaveQuestSystem.cs | 92 ++++++++++++ .../SaveTask/SaveQuestSystem.cs.meta | 11 ++ .../Scripts/SceneManager/SceneTaskManager.cs | 132 ++++++++++++++++++ .../SceneManager/SceneTaskManager.cs.meta | 11 ++ Assets/Scripts/Task/TaskManager.cs | 2 +- UserSettings/EditorUserSettings.asset | 4 +- 13 files changed, 405 insertions(+), 11 deletions(-) create mode 100644 Assets/Scripts/SceneManager/SaveTask.meta create mode 100644 Assets/Scripts/SceneManager/SaveTask/SaveQuestSystem.cs create mode 100644 Assets/Scripts/SceneManager/SaveTask/SaveQuestSystem.cs.meta create mode 100644 Assets/Scripts/SceneManager/SceneTaskManager.cs create mode 100644 Assets/Scripts/SceneManager/SceneTaskManager.cs.meta diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index d82dd838..e65723f5 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -84,7 +84,7 @@ - + diff --git a/Assets/Scenes/CaveEntrance.unity b/Assets/Scenes/CaveEntrance.unity index 1b1b79bb..09111251 100644 --- a/Assets/Scenes/CaveEntrance.unity +++ b/Assets/Scenes/CaveEntrance.unity @@ -23441,6 +23441,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 105457317} + m_TargetAssemblyTypeName: SaveController, Assembly-CSharp + m_MethodName: SaveQuests + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!114 &105457320 MonoBehaviour: m_ObjectHideFlags: 0 @@ -50717,6 +50729,7 @@ GameObject: m_Component: - component: {fileID: 251828923} - component: {fileID: 251828922} + - component: {fileID: 251828924} m_Layer: 0 m_Name: LocalSceneManager m_TagString: Untagged @@ -50757,6 +50770,24 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 17 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &251828924 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251828921} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b8a65f0b147a2e44e8f244301ff0de57, type: 3} + m_Name: + m_EditorClassIdentifier: + TaskElements: [] + isNewGame: 1 + isContinued: 0 + MapName: + ElementFolderName: Quest + ItemsListName: QuestsList --- !u!1 &253761061 GameObject: m_ObjectHideFlags: 0 @@ -114332,6 +114363,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 933251618} + m_TargetAssemblyTypeName: SaveController, Assembly-CSharp + m_MethodName: SaveQuests + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!114 &933251620 MonoBehaviour: m_ObjectHideFlags: 0 @@ -126190,6 +126233,7 @@ GameObject: - component: {fileID: 1193017324} - component: {fileID: 1193017323} - component: {fileID: 1193017322} + - component: {fileID: 1193017326} m_Layer: 0 m_Name: Door m_TagString: SceneTransition @@ -126210,6 +126254,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: SceneName: SampleScene + SaveController: {fileID: 1193017321} --- !u!50 &1193017323 Rigidbody2D: serializedVersion: 4 @@ -126271,6 +126316,18 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1193017326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193017321} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f8dbef2798cc8064f86e56d2bc02d2fa, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &1193056560 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 80c6e2b8..35290ab4 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -1012,6 +1012,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 2102416356} + isAllowedToShowPanels: 1 --- !u!58 &132185249 CircleCollider2D: m_ObjectHideFlags: 0 @@ -1579,11 +1580,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4835b3bfd0c275b4b99ac740c4034acb, type: 3} m_Name: m_EditorClassIdentifier: - Panel: {fileID: 626405956} - EPanel: {fileID: 0} - SpacePanel: {fileID: 0} - EPanel1: {fileID: 0} - SpacePanel1: {fileID: 0} + Panels: [] + actionPanels: + - E-InteractivePanel + - E-InteractivePanelAbove + - Spacebar-InteractivePanel + - Spacebar-InteractivePanelAbove --- !u!1 &174581753 GameObject: m_ObjectHideFlags: 0 @@ -7444,6 +7446,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 158729764} + isAllowedToShowPanels: 1 --- !u!58 &277639225 CircleCollider2D: m_ObjectHideFlags: 0 @@ -30835,6 +30838,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 1027343184} + isAllowedToShowPanels: 1 --- !u!58 &584661740 CircleCollider2D: m_ObjectHideFlags: 0 @@ -41124,6 +41128,7 @@ GameObject: m_Component: - component: {fileID: 805783479} - component: {fileID: 805783478} + - component: {fileID: 805783480} m_Layer: 0 m_Name: LocalSceneManager m_TagString: Untagged @@ -41164,6 +41169,24 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 17 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &805783480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 805783477} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b8a65f0b147a2e44e8f244301ff0de57, type: 3} + m_Name: + m_EditorClassIdentifier: + TaskElements: [] + isNewGame: 1 + isContinued: 0 + MapName: + ElementFolderName: Quest + ItemsListName: QuestsList --- !u!1 &805898524 GameObject: m_ObjectHideFlags: 0 @@ -41217,6 +41240,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 1265465282} + isAllowedToShowPanels: 1 --- !u!58 &805898527 CircleCollider2D: m_ObjectHideFlags: 0 @@ -41587,6 +41611,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 641696201} + isAllowedToShowPanels: 1 --- !u!58 &875629809 CircleCollider2D: m_ObjectHideFlags: 0 @@ -41753,6 +41778,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 889215474} + isAllowedToShowPanels: 1 --- !u!58 &887082961 CircleCollider2D: m_ObjectHideFlags: 0 @@ -42190,6 +42216,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 897697754} + m_TargetAssemblyTypeName: SaveController, Assembly-CSharp + m_MethodName: SaveQuests + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!114 &897697754 MonoBehaviour: m_ObjectHideFlags: 0 @@ -43026,6 +43064,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 8620305} + isAllowedToShowPanels: 1 --- !u!58 &1013260100 CircleCollider2D: m_ObjectHideFlags: 0 @@ -43390,6 +43429,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 68076400} + isAllowedToShowPanels: 1 --- !u!58 &1102795099 CircleCollider2D: m_ObjectHideFlags: 0 @@ -44032,6 +44072,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 242009510} + isAllowedToShowPanels: 1 --- !u!58 &1202265634 CircleCollider2D: m_ObjectHideFlags: 0 @@ -136872,6 +136913,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 926459323} + isAllowedToShowPanels: 1 --- !u!58 &1698721849 CircleCollider2D: m_ObjectHideFlags: 0 @@ -137794,6 +137836,7 @@ GameObject: - component: {fileID: 2020454685} - component: {fileID: 2020454684} - component: {fileID: 2020454683} + - component: {fileID: 2020454687} m_Layer: 0 m_Name: Door m_TagString: SceneTransition @@ -137814,6 +137857,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: SceneName: CaveEntrance + SaveController: {fileID: 2020454682} --- !u!50 &2020454684 Rigidbody2D: serializedVersion: 4 @@ -137875,6 +137919,18 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2020454687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2020454682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f8dbef2798cc8064f86e56d2bc02d2fa, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &2042296513 GameObject: m_ObjectHideFlags: 0 @@ -138318,6 +138374,7 @@ MonoBehaviour: _tmpSecondPanel: {fileID: 0} _tmpPanelAbove: {fileID: 0} obj: {fileID: 682072029} + isAllowedToShowPanels: 1 --- !u!58 &2132075801 CircleCollider2D: m_ObjectHideFlags: 0 @@ -138641,6 +138698,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 2146696734} + m_TargetAssemblyTypeName: SaveController, Assembly-CSharp + m_MethodName: SaveQuests + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!114 &2146696734 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/DoorBehaviour.cs b/Assets/Scripts/DoorBehaviour.cs index 1254f1c0..13c79ffb 100644 --- a/Assets/Scripts/DoorBehaviour.cs +++ b/Assets/Scripts/DoorBehaviour.cs @@ -8,6 +8,7 @@ public class DoorBehaviour : MonoBehaviour public static DoorBehaviour Instance; public string SceneName = "SampleScene"; + public GameObject SaveController; private void Awake() { if(Instance == null) @@ -33,6 +34,11 @@ public class DoorBehaviour : MonoBehaviour public void ScenetToMoveTo() { + // 1. Save all befor change scene + SaveController.GetComponent().SaveItems(); + SaveController.GetComponent().SaveQuests(); + + // 2. Change scene SceneManager.LoadScene(this.SceneName); } } diff --git a/Assets/Scripts/SaveController.cs b/Assets/Scripts/SaveController.cs index 2ddec235..b2dc29bb 100644 --- a/Assets/Scripts/SaveController.cs +++ b/Assets/Scripts/SaveController.cs @@ -23,4 +23,9 @@ public class SaveController : MonoBehaviour { SceneEquippableItemManager.Instance.SaveEquippableItems(); } + + public void SaveQuests() + { + SceneTaskManager.Instance.SaveQuests(); + } } diff --git a/Assets/Scripts/SaveSystem.cs b/Assets/Scripts/SaveSystem.cs index fce527b5..a5c04064 100644 --- a/Assets/Scripts/SaveSystem.cs +++ b/Assets/Scripts/SaveSystem.cs @@ -5,8 +5,11 @@ using System.IO; public static class SaveSystem { - public static string GetSavePath(string SubFolder) + public static string GetSavePath(string SubFolder = null) { - return Application.persistentDataPath + "/" + SubFolder; + if(SubFolder != null) + return Application.persistentDataPath + "/" + SubFolder; + + return Application.persistentDataPath; } } diff --git a/Assets/Scripts/SceneManager/SaveTask.meta b/Assets/Scripts/SceneManager/SaveTask.meta new file mode 100644 index 00000000..e93d35dc --- /dev/null +++ b/Assets/Scripts/SceneManager/SaveTask.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58865c060b4d23f41af849da7f95c807 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/SceneManager/SaveTask/SaveQuestSystem.cs b/Assets/Scripts/SceneManager/SaveTask/SaveQuestSystem.cs new file mode 100644 index 00000000..d57f6b32 --- /dev/null +++ b/Assets/Scripts/SceneManager/SaveTask/SaveQuestSystem.cs @@ -0,0 +1,92 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; + +public static class SaveQuestSystem +{ + public static void SaveQuestItem(Task quest, string ElementFolderName) + { + BinaryFormatter formatter = new BinaryFormatter(); + // todo: add in scene name folder + string path = SaveSystem.GetSavePath(ElementFolderName); +Debug.Log(path); + if (!Directory.Exists(path)) + Directory.CreateDirectory(path); + + path += "/" + quest.title + ".fun"; + + FileStream stream = new FileStream(path, FileMode.Create); + + + formatter.Serialize(stream, quest); + stream.Close(); + } + + public static void SaveQuestsList(List questsList, string ElementName) + { + BinaryFormatter formatter = new BinaryFormatter(); + // todo: add in scene name folder + string path = SaveSystem.GetSavePath(); +Debug.Log("Saved Quest at " + path); + if (!Directory.Exists(path)) + Directory.CreateDirectory(path); + + path += "/" + ElementName + ".fun"; + + FileStream stream = new FileStream(path, FileMode.Create); + + formatter.Serialize(stream, questsList); + stream.Close(); + } + + private static void Save() + { + + } + + public static Task LoadQuestItem(string questTitle, string ElementFolderName) + { + string path = SaveSystem.GetSavePath(ElementFolderName) + "/" + questTitle;// + ".fun"; + + if(File.Exists(path)) + { + BinaryFormatter formatter = new BinaryFormatter(); + FileStream stream = new FileStream(path, FileMode.Open); + + Task quest = formatter.Deserialize(stream) as Task; + stream.Close(); + + return quest; + } else { + Debug.Log("Save file not found in " + path); + return null; + } + } + + public static List LoadQuestsList(string ElementName) + { + string path = SaveSystem.GetSavePath() + "/" + ElementName + ".fun"; + + if(File.Exists(path)) + { + + BinaryFormatter formatter = new BinaryFormatter(); + FileStream stream = new FileStream(path, FileMode.Open); + + List equitabbleItemList = formatter.Deserialize(stream) as List; + stream.Close(); + + return equitabbleItemList; + } else { + Debug.Log("Save file not found in " + path); + return null; + } + } + + private static void Load() + { + + } +} diff --git a/Assets/Scripts/SceneManager/SaveTask/SaveQuestSystem.cs.meta b/Assets/Scripts/SceneManager/SaveTask/SaveQuestSystem.cs.meta new file mode 100644 index 00000000..aa3930bf --- /dev/null +++ b/Assets/Scripts/SceneManager/SaveTask/SaveQuestSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24fcf11bf60d7c14685586981559ae5f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/SceneManager/SceneTaskManager.cs b/Assets/Scripts/SceneManager/SceneTaskManager.cs new file mode 100644 index 00000000..aa441234 --- /dev/null +++ b/Assets/Scripts/SceneManager/SceneTaskManager.cs @@ -0,0 +1,132 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEngine.SceneManagement; +using System.IO; +using System.Linq; + +public class SceneTaskManager : MonoBehaviour +{ + private const string DYNAMIC_ELEMENT = "/DynamicElements/"; + private const string STATIC_ELEMENT = "/StaticElements/"; + + [SerializeField] + public List TaskElements; + + public bool isNewGame = true; + public bool isContinued = false; + public string MapName; + public string ElementFolderName = "Quest"; + public string ItemsListName = "QuestsList"; + + public static SceneTaskManager Instance; + + public void Awake() + { + if(Instance == null) + { + this.MapName = SceneManager.GetActiveScene().name; + + Instance = this; + + + }else if (Instance != this) + { + Destroy(gameObject); + } + } + + public void Start() + { + LoadQuests(); // load user quests + BuildQuests(TaskElements); // pass them to TaskManager + } + + /// + /// Pass quest to taskManager after load data + /// + public void BuildQuests(List questList) + { + // pass to taskManager singleton + foreach(Task quest in questList) + TaskManager.Instance.AddTask(quest); + } + + public int AddQuest(GameObject dynamicObject) + { + Task quest = dynamicObject.GetComponent().task; + + this.TaskElements.Add(quest); + + return this.TaskElements.Count - 1; + } + + public void RemoveQuest(string _title) + { + // 1. Fetch all matched quests - we search by title which shoudl be unique but who know :D + List questList = this.TaskElements.Where(quest => quest.title == _title).ToList(); + + // 2. Remove them + this.TaskElements.RemoveAll(quest => quest.title == _title); + } + + /// + /// Use TaskManaager list to save user quests - TaskManager.Instance.taskList + /// + public void SaveQuests() + { + // Case I - if we remember all list + // 1) if after removed item form DynamicList is empty - remove all file + // 2) if after removed item form DynamciList there are another one - save updated list again + if(TaskManager.Instance.taskList.Count > 0) { + SaveQuestSystem.SaveQuestsList(TaskManager.Instance.taskList, this.ItemsListName); + } else { + string _path = SaveSystem.GetSavePath() + "/" + this.ItemsListName + ".fun"; + + try + { + Debug.Log("File to remove: " + _path); + + if(File.Exists(_path)) + { + File.Delete(_path); + } + } + catch (IOException ioExp) + { + Debug.LogError(ioExp.Message); + } + } + + // Case II - if we rememenber object per file + // 1) remove specyfic file + // + // Unfortunatelly we don't use this way of saving items yet :D + } + + /// + /// Load quests to local list + /// Pass this to taskManager in outside method + /// + public void LoadQuests() + { + string path = SaveSystem.GetSavePath(); + + if (!Directory.Exists(path)) // if not exists thats mean there was nothing saved yet - nothing to load + return; + + FileInfo[] fileInfo = new DirectoryInfo(path).GetFiles(); + + foreach(FileInfo file in fileInfo) + { + if(file.Name != this.ItemsListName + ".fun") + continue; + + List taskList = SaveQuestSystem.LoadQuestsList(this.ItemsListName); + + foreach(Task task in taskList) + TaskElements.Add(task); + } + } +} diff --git a/Assets/Scripts/SceneManager/SceneTaskManager.cs.meta b/Assets/Scripts/SceneManager/SceneTaskManager.cs.meta new file mode 100644 index 00000000..920b49a7 --- /dev/null +++ b/Assets/Scripts/SceneManager/SceneTaskManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8a65f0b147a2e44e8f244301ff0de57 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Task/TaskManager.cs b/Assets/Scripts/Task/TaskManager.cs index 75e6f3b7..092528cd 100644 --- a/Assets/Scripts/Task/TaskManager.cs +++ b/Assets/Scripts/Task/TaskManager.cs @@ -14,7 +14,7 @@ public class TaskManager : MonoBehaviour public bool isOpen = false; [Header("Tasks list")] - [SerializeField] List taskList; + [SerializeField] public List taskList; private void Awake() { diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index 2965118b..54041df8 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -30,10 +30,10 @@ EditorUserSettings: value: 22424703114646680e0b0227036c72111f1958072926337e38271427fb flags: 0 RecentlyUsedScenePath-8: - value: 22424703114646680e0b0227036c6c111b07142f1f2b233e2867083debf42d + value: 22424703114646680e0b0227036c7c1100123d24383a273e2e2c5326ece92021 flags: 0 RecentlyUsedScenePath-9: - value: 22424703114646680e0b0227036c7c1100123d24383a273e2e2c5326ece92021 + value: 22424703114646680e0b0227036c6c111b07142f1f2b233e2867083debf42d flags: 0 vcSharedLogLevel: value: 0d5e400f0650