public void AddListener(Saveable instance, SaveablePrefab scriptablePrefab, string identification) { SaveablePrefabData prefabData; // Is there no data yet for this scriptable prefab? Create it. if (!saveReferences.TryGetValue(scriptablePrefab, out prefabData)) { prefabData = new SaveablePrefabData(); prefabData.prefabGUID = scriptablePrefab.GetGuid(); prefabData.trimmedguid = $"{this.gameObject.scene.name}{prefabData.prefabGUID.Substring(0, 4)}"; saveReferences.Add(scriptablePrefab, prefabData); } // Add identification keys for each saveable object. if (!prefabData.saveableGUIDS.ContainsKey(instance)) { string saveableGUID = (string.IsNullOrEmpty(identification) ? $"I{prefabData.trimmedguid}{prefabData.saveableGUIDS.Count}" : identification); instance.saveIdentification.UseConstant = true; instance.saveIdentification.ConstantValue = saveableGUID; isSaveable = true; prefabData.saveableGUIDS.Add(instance, saveableGUID); } }