/// <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); }
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); } }