예제 #1
0
        public void DoTransition(Action onOut, float duration, Color color, float durationOutPercent = 0.6f)
        {
            if (duration < 1e-2f)
            {
                onOut.Invoke();
                return;
            }

            if (canvas == null)
            {
                SetupCanvas();
            }

            var c0 = color;

            c0.a = 0f;

            canvas.enabled = true;
            image.material = null;
            image.color    = color;

            float outDuration = duration * durationOutPercent;
            float inDuration  = duration * (1f - durationOutPercent);

            var fadeIn = new Animation <Color>(val => image.color = val)
                         .From(color).To(c0)
                         .For(inDuration)
                         .With(Interpolator.Smooth())
                         .OnCompleted(() => { canvas.enabled = false; });


            var fadeOut = new Animation <Color>(val => image.color = val)
                          .From(c0).To(color)
                          .For(outDuration)
                          .With(Interpolator.Accelerate())
                          .OnCompleted(() =>
            {
                onOut?.Invoke();
                Conditional.WaitFrames(3).Do(() => { fadeIn.Start(); });
            })
                          .Start();
        }