/// <summary>
    ///  读取内存中的存档值
    /// </summary>
    /// <typeparam name="T1">赋值操作对象类型。</typeparam>
    /// <typeparam name="T2">你希望保存组件对象类型
    /// 请务必保证该类型中的泛型,是你希望保存组件对象类型</typeparam>
    /// <param name="gameObject">gameObject</param>
    /// <param name="sceneName">场景名,不填为当前场景</param>
    /// <returns></returns>
    public static bool LoadComponent <T1, T2>(this GameObject gameObject, string sceneName = "")
        where T1 : ISave <T2>
        where T2 : UnityEngine.Component
    {
        if (gameObject.CheckEmpty())
        {
            return(false);
        }
        T2 component = gameObject.GetComponent <T2>();

        if (component.CheckEmpty())
        {
            return(false);
        }

        SaveObject saveObject = GameSaveUtility.GetSaveObjectData(gameObject.name, sceneName);
        SetValue   setValue   = GameSaveUtility.GetComponentSetValue <T1, T2>(gameObject, saveObject);

        if (null == setValue)
        {
            return(false);
        }
        bool result = gameSaveSystem.Load <T1, T2>(component, setValue);

        return(result);
    }
Пример #2
0
    public void SaveComponent <T1, T2>(string name, string value, string sceneName)
        where T1 : ISave <T2>
    {
        if (string.IsNullOrEmpty(name))
        {
            return;
        }
        string ISaveName     = typeof(T1).Name;
        string componentName = typeof(T2).Name;

        SceneData sceneData = GameSaveUtility.GetSceneData(sceneName);

        if (null == sceneData)
        {
            GameSaveUtility.AddSceneData(sceneName);
        }
        SaveObject saveObject = GameSaveUtility.GetSaveObjectData(name, sceneName);

        if (null == saveObject)
        {
            saveObject = GameSaveUtility.AddSaveObjectData(name, sceneName);
        }

        if (saveObject.SetValues.CheckEmpty())
        {
            saveObject.SetValues = new Dictionary <string, Dictionary <string, SetValue> >();
        }

        Dictionary <string, SetValue> setValues;

        if (saveObject.SetValues.ContainsKey(componentName))
        {
            setValues = saveObject.SetValues[componentName];
        }
        else
        {
            setValues = new Dictionary <string, SetValue>();
            saveObject.SetValues.Add(componentName, setValues);
        }

        SetValue setValue = new SetValue
        {
            FunOpera = ISaveName,
            Value    = value
        };

        if (setValues.ContainsKey(ISaveName))
        {
            setValues[ISaveName] = setValue;
        }
        else
        {
            setValues.Add(ISaveName, setValue);
        }
    }