public static void Save(object obj) { if (obj == null) { return; } Type type = obj.GetType(); while (type != null) { FieldInfo[] fieldInfos = type.GetFields(bindingFlags); type = type.BaseType; foreach (FieldInfo fieldInfo in fieldInfos) { StoragePlayerPrefsAttribute attribute = fieldInfo.GetCustomAttribute(typeof(StoragePlayerPrefsAttribute), false) as StoragePlayerPrefsAttribute; if (attribute == null) { continue; } var value = fieldInfo.GetValue(obj); var nameVar = attribute.NameStoredVar; if (fieldInfo.FieldType == typeof(string)) { PlayerPrefs.SetString(nameVar, (string)value); } else if (fieldInfo.FieldType == typeof(bool)) { int auxInteger = System.Convert.ToInt32(value); PlayerPrefs.SetInt(nameVar, auxInteger); } else if (fieldInfo.FieldType == typeof(float)) { PlayerPrefs.SetFloat(nameVar, (float)value); } else if (ConvertExtend.TryConvertTo <int>(value, out int auxInteger)) { PlayerPrefs.SetInt(nameVar, auxInteger); } else { LogManager.LogError("You can't save this var"); } } } PlayerPrefs.Save(); }
public static void Load(object obj) { if (obj == null) { return; } Type type = obj.GetType(); while (type != null) { MemberInfo[] membersInfo = type.GetMembers(bindingFlags); type = type.BaseType; foreach (MemberInfo memberInfo in membersInfo) { StoragePlayerPrefsAttribute attribute = memberInfo.GetCustomAttribute(typeof(StoragePlayerPrefsAttribute), false) as StoragePlayerPrefsAttribute; if (attribute == null) { continue; } var value = memberInfo.GetValue(obj); var nameVar = attribute.NameStoredVar; if (memberInfo.ValueType() == typeof(string)) { PlayerPrefsExtend.LoadString(nameVar, (string)value, new MemberComplexInfo(memberInfo, obj)); } else if (memberInfo.ValueType() == typeof(bool)) { PlayerPrefsExtend.LoadBool(nameVar, (bool)value, new MemberComplexInfo(memberInfo, obj)); } else if (memberInfo.ValueType() == typeof(float)) { PlayerPrefsExtend.LoadFloat(nameVar, (float)value, new MemberComplexInfo(memberInfo, obj)); } else if (ConvertExtend.TryConvertTo <int>(value, out int auxInteger)) { PlayerPrefsExtend.LoadInt(nameVar, auxInteger, new MemberComplexInfo(memberInfo, obj)); } else { LogManager.LogWarning("You can't load this var"); } } } }