コード例 #1
0
        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);
        }
コード例 #2
0
        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;
                }
            }
        }