public void LoadGameState() { Debug.Log("Start loading game @ frame #" + Time.frameCount + " / time: " + DateTime.Now.TimeOfDay); // Clean up & prepare loadingPrepared = false; loadedBodyData = new SaveFile_BodyData(); initializers.Clear(); // 0. Read file and convert Json string fileContent = System.IO.File.ReadAllText(saveGameFilePath); // read file from disk // 1. Deserialize SaveFileSerializer.Deserialize("Head", fileContent, encryptSaveFile, ref HeadData); SaveFileSerializer.Deserialize("Body", fileContent, encryptSaveFile, ref loadedBodyData); // 2. Create ScriptableObject Instances and load data into them foreach (var data in loadedBodyData.scriptableObjectDatas) { LoadScriptableObject(data); } Debug.Log("Loaded all scriptableObjects @ frame #" + Time.frameCount + " / time: " + DateTime.Now.TimeOfDay); // 3. All Guids auf bestehenden Objekten initialisieren GuidManager.InitializeGuidComponents(); Debug.Log("Initialized all GuidComponents @ frame #" + Time.frameCount + " / time: " + DateTime.Now.TimeOfDay); // 4. Load Components List <SaveableComponent> components = ComponentExtensions.FindAllComponentsOfType <SaveableComponent>(); foreach (var componentData in loadedBodyData.componentDatas) { var component = FindSaveableComponentByGuid(componentData.Id, components); if (component != null) { component.RestoreData(componentData); } } // 5. Cleanup Resources.UnloadUnusedAssets(); // 6. Loading complete Debug.Log("Loading complete @ frame #" + Time.frameCount + " / time: " + DateTime.Now.TimeOfDay); }