public override void Init()
    {
        base.Init();

        if (_saveMode == ConsoleVarAttribute.SaveMode.PlayerPrefs)
        {
            if (PlayerPrefsX.SupportedValueTypes.Contains(_memberType))
            {
                if (CanGetValue() && CanSetValue())
                {
                    _saveMode = ConsoleVarAttribute.SaveMode.PlayerPrefs;
                    _prefsKeys = "unity-x-gameconsole-var-" + DisplayName;
                }
                else
                {
                    Log.Error($"ConsoleVar {DisplayName} cannot be saved in preferences because it needs to be 'gettable' and 'settable'.");
                }
            }
            else
            {
                Log.Error($"ConsoleVar {DisplayName} cannot be saved in preferences because it is of an unsupported save type.");
            }
        }

        if (_saveMode != ConsoleVarAttribute.SaveMode.NotSaved)
        {
            if (TryLoadValue(out object value))
                SetValue(value);
        }
    }
    public GameConsoleFieldOrProperty(MemberInfo memberInfo, Type memberType)
    {
        _memberType = memberType;
        ConsoleVarAttribute attribute = memberInfo.GetCustomAttribute<ConsoleVarAttribute>();

        var invokeParameters = new List<Parameter>()
        {
            new Parameter(null, memberType, optional: true, hasDefaultValue: false, null)
        };

        _saveMode = attribute.Save;

        Construct(memberInfo, attribute, invokeParameters);
    }