public PlayerPrefData(string key, T value, Action <T> OnValueChanged = null) { _key = key; //if : The following key is not used, we initialized the data type and their respective value if (!PlayerPrefs.HasKey(key)) { //if : Valid DataType SetData(value); #if UNITY_EDITOR if (PlayerPrefDataSettings.IsPlayerPrefEditorDataAlreadyInContainer(key) != -1) { PlayerPrefDataSettings.EnlistPlayerPrefEditorDataInContainer(key, Convert.ChangeType(value, typeof(T)).ToString(), ref OnValueChanged); } else { PlayerPrefDataSettings.EnlistPlayerPrefEditorDataInContainer(key, GetData().ToString(), ref OnValueChanged); } #endif } else { if (AssigningDataType(value)) { InvokeOnValueChangedEvent(GetData()); } #if UNITY_EDITOR PlayerPrefDataSettings.EnlistPlayerPrefEditorDataInContainer(key, GetData().ToString(), ref OnValueChanged); #endif } RegisterOnValueChangedEvent(OnValueChanged); }
public void SetData(T value) { if (AssigningDataType(value)) { #if UNITY_EDITOR int index = PlayerPrefDataSettings.IsPlayerPrefEditorDataAlreadyInContainer(_key); #endif switch (_dataType) { case CoreEnums.DataTypeForSavingData.DATA_TYPE_BOOL: bool t_ParsedBoolValue = (bool)Convert.ChangeType(value, typeof(bool)); PlayerPrefs.SetInt(_key, t_ParsedBoolValue ? 1 : 0); InvokeOnValueChangedEvent((T)Convert.ChangeType(value, typeof(bool))); #if UNITY_EDITOR if (index != -1) { PlayerPrefDataSettings.listOfUsedPlayerPrefEditorData[index].InvokeEvent(t_ParsedBoolValue.ToString()); } #endif break; case CoreEnums.DataTypeForSavingData.DATA_TYPE_INT: int t_ParsedIntValue = (int)Convert.ChangeType(value, typeof(int)); PlayerPrefs.SetInt(_key, t_ParsedIntValue); InvokeOnValueChangedEvent((T)Convert.ChangeType(value, typeof(int))); #if UNITY_EDITOR if (index != -1) { PlayerPrefDataSettings.listOfUsedPlayerPrefEditorData[index].InvokeEvent(t_ParsedIntValue.ToString()); } #endif break; case CoreEnums.DataTypeForSavingData.DATA_TYPE_FLOAT: float t_ParsedFloatValue = (float)Convert.ChangeType(value, typeof(float)); PlayerPrefs.SetFloat(_key, t_ParsedFloatValue); InvokeOnValueChangedEvent((T)Convert.ChangeType(value, typeof(float))); #if UNITY_EDITOR if (index != -1) { PlayerPrefDataSettings.listOfUsedPlayerPrefEditorData[index].InvokeEvent(t_ParsedFloatValue.ToString()); } #endif break; case CoreEnums.DataTypeForSavingData.DATA_TYPE_DOUBLE: double t_ParsedDoubleValue = (double)Convert.ChangeType(value, typeof(double)); PlayerPrefs.SetString(_key, t_ParsedDoubleValue.ToString()); InvokeOnValueChangedEvent((T)Convert.ChangeType(value, typeof(double))); #if UNITY_EDITOR if (index != -1) { PlayerPrefDataSettings.listOfUsedPlayerPrefEditorData[index].InvokeEvent(t_ParsedDoubleValue.ToString()); } #endif break; case CoreEnums.DataTypeForSavingData.DATA_TYPE_STRING: string t_ParsedStringValue = (string)Convert.ChangeType(value, typeof(string)); PlayerPrefs.SetString(_key, t_ParsedStringValue); InvokeOnValueChangedEvent((T)Convert.ChangeType(value, typeof(string))); #if UNITY_EDITOR if (index != -1) { PlayerPrefDataSettings.listOfUsedPlayerPrefEditorData[index].InvokeEvent(t_ParsedStringValue.ToString()); } #endif break; case CoreEnums.DataTypeForSavingData.DATA_TYPE_DATETIME: DateTime t_ParsedDateTime = (DateTime)Convert.ChangeType(value, typeof(DateTime)); PlayerPrefs.SetString(_key, t_ParsedDateTime.ToString()); InvokeOnValueChangedEvent((T)Convert.ChangeType(value, typeof(DateTime))); #if UNITY_EDITOR if (index != -1) { PlayerPrefDataSettings.listOfUsedPlayerPrefEditorData[index].InvokeEvent(t_ParsedDateTime.ToString()); } #endif break; } } }