public void AddFloatRelativeAnimation(float deltaValue, string propertyName = "_AlphaMultiplier", float duration = 2f, UIAnimationUtility.EaseType easeType = UIAnimationUtility.EaseType.easeInSine, int loopCount = 0, UIAnimation_Base.LoopType loopType = UIAnimation_Base.LoopType.PingPong, Action onCompleteAction = null)
        {
            MaterialAnimation.FloatData floatData = new MaterialAnimation.FloatData();
            floatData.deltaValue   = deltaValue;
            floatData.propertyName = propertyName;

            AddFloatAnimation(UIAnimation_Base.TweenType.Relative, onCompleteAction, floatData, duration, UIAnimationUtility.GetCurve(easeType), loopType, loopCount);
        }
        ///////////////////////////////////////////////////////////////////////////
        //
        // UIColorAnimator Functions
        //

        public void StartAnimation(MaterialAnimation.AnimationType animationType, UIAnimation_Base.TweenType tweenType, MaterialAnimation.ColorData colorData, MaterialAnimation.FloatData floatData, float duration, AnimationCurve easeCurve, UIAnimation_Base.LoopType loopType, int loopCount, Action onCompleteAction = null)
        {
            switch (animationType)
            {
            case MaterialAnimation.AnimationType.Color:
                AddColorAnimation(tweenType, onCompleteAction, colorData, duration, easeCurve, loopType, loopCount);
                break;

            case MaterialAnimation.AnimationType.Float:
                AddFloatAnimation(tweenType, onCompleteAction, floatData, duration, easeCurve, loopType, loopCount);
                break;
            }
        }
        ////////////////////////////////////////
        //
        // StartFloat Functions

        protected void AddFloatAnimation(UIAnimation_Base.TweenType tweenType, Action onCompleteAction, MaterialAnimation.FloatData floatData, float duration, AnimationCurve easeCurve, UIAnimation_Base.LoopType loopType, int loopCount)
        {
            MaterialAnimation_Float newMaterialAnimationFloat = new MaterialAnimation_Float(this, onCompleteAction, tweenType, Shader.PropertyToID(floatData.propertyName), floatData.startValue, floatData.endValue, floatData.deltaValue, duration, easeCurve, loopType, loopCount);

            myMaterialAnimationsFloat.Enqueue(newMaterialAnimationFloat);
        }