/// <summary>
        /// 淡出并移除背景
        /// </summary>
        /// <param name="time">淡出时间</param>
        public static Queue <ImageEffect> FadeOutBackground(float time)
        {
            AnimationBuilder builder = new AnimationBuilder();
            UI2DSprite       ui      = EffectBuilder.backgroundSprite;

            return(builder.BeginWith(EffectBuilder.FadeOut(ui, time)).Then(EffectBuilder.RemoveSprite(ui)).Get());
        }
        public static Queue <ImageEffect> ChangeSprite(UI2DSprite uiSprite, Sprite sprite)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.ChangeSprite(uiSprite, sprite
                                                                )).Get());
        }
        /// <summary>
        /// 移除背景
        /// </summary>
        public static Queue <ImageEffect> RemoveBackground()
        {
            AnimationBuilder builder = new AnimationBuilder();
            UI2DSprite       ui      = EffectBuilder.backgroundSprite;

            return(builder.BeginWith(EffectBuilder.ChangeSprite(ui, null)).Get());
        }
        /// <summary>
        /// 从当前位置向某一位置移动
        /// </summary>
        /// <param name="depth">图像层数</param>
        /// <param name="target">目标位置</param>
        /// <param name="time">移动时间</param>
        public static Queue <ImageEffect> MoveCharacterSprite(int depth, Vector3 target, float time)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.MoveByDepth(depth, target, time))
                   .Get());
        }
        /// <summary>
        /// 设置并淡入立绘
        /// </summary>
        /// <param name="depth">图像层数</param>
        /// <param name="sprite">图像名</param>
        /// <param name="time">淡入时间</param>
        public static Queue <ImageEffect> SetCharacterSprite(int depth, Sprite sprite, float time)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.SetSpriteByDepth(depth, sprite))
                   .Then(EffectBuilder.FadeInByDepth(depth, time))
                   .Get());
        }
        /// <summary>
        /// 消除对话框
        /// </summary>
        /// <param name="fadeout">淡出时间</param>
        public static Queue <ImageEffect> FadeOutDialog(float fadeout)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.FadeOutDialog(fadeout))
                   .Then(EffectBuilder.SetDialog(false))
                   .Get());
        }
        /// <summary>
        /// 淡出并移除立绘
        /// </summary>
        /// <param name="depth">图像层数</param>
        /// <param name="time">淡出时间</param>
        public static Queue <ImageEffect> RemoveCharacterSprite(int depth, float time)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.FadeOutByDepth(depth, time))
                   .Then(EffectBuilder.DeleteSpriteByDepth(depth))
                   .Get());
        }
        //public static Queue<ImageEffect> ChangeFront(string character, Sprite sprite)
        //{
        //    ImageManager im = GameObject.Find("GameManager").GetComponent<ImageManager>();
        //    return ChangeSprite(im.GetFront(character), sprite);
        //}

        public static Queue <ImageEffect> ChangeSpriteFade(UI2DSprite ui, Sprite sprite, float fadeout, float fadein)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.FadeOut(ui, fadeout))
                   .Then(EffectBuilder.ChangeSprite(ui, sprite))
                   .Then(EffectBuilder.FadeIn(ui, fadein))
                   .Get());
        }
        /// <summary>
        /// 设置并淡入背景
        /// </summary>
        /// <param name="sprite">图像名</param>
        /// <param name="time">淡入时间</param>
        public static Queue <ImageEffect> FadeInBackground(Sprite sprite, float time)
        {
            AnimationBuilder builder = new AnimationBuilder();
            UI2DSprite       ui      = EffectBuilder.backgroundSprite;

            return(builder.BeginWith(EffectBuilder.ChangeSprite(ui, sprite))
                   .Then(EffectBuilder.FadeIn(ui, time))
                   .Get());
        }
        /// <summary>
        /// 改变原有立绘(淡出淡入)
        /// </summary>
        /// <param name="depth">图像层数</param>
        /// <param name="sprite">图像名</param>
        /// <param name="fadeout">原图淡出时间</param>
        /// <param name="fadein">淡入时间</param>
        public static Queue <ImageEffect> ChangeCharacterSprite(int depth, Sprite sprite, float fadeout, float fadein)
        {
            AnimationBuilder builder = new AnimationBuilder();

            if (fadeout == 0)
            {
                builder.BeginWith(EffectBuilder.ChangeByDepth(depth, sprite));
            }
            else
            {
                builder.BeginWith(EffectBuilder.FadeOutByDepth(depth, fadeout))
                .Then(EffectBuilder.SetSpriteByDepth(depth, sprite));
            }
            if (fadein != 0)
            {
                return(builder.Then(EffectBuilder.FadeInByDepth(depth, fadein)).Get());
            }
            return(builder.Get());
        }