예제 #1
0
    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);
        }
    }