DoTween NGUI bug



多次动画导致UISprite丢失

DOTween动画进行时与UISprite有冲突,DOTween多次重复同一个动画时,UISprite会莫名的丢失

UISprite动画代码

CUIManager.Instance.OpenWindow(newCmd.UIName, newCmd.Args);
CUIManager.Instance.CallUI(newCmd.UIName, (ui, _args) =>
{
    CUIMask.Show(CUIMaskType.TransparentMask);  // 确保遮罩
    ui.transform.DOKill();
    ui.transform.DOLocalMoveFrom(ui.transform.localPosition + new Vector3(MOVE_ANIM_OFFSET, 0), UI_ANIM_TIME)
        //.SetEase(DG.Tweening.Ease.OutBack)
        .onComplete = CUIMask.Hide;

});

冲突表现

DOTween的动画进行时,UISprite会莫名地不见了

image

UISPrite解决办法

复制代码
CUIManager.Instance.OpenWindow(newCmd.UIName, newCmd.Args);//打开窗口
        CUIManager.Instance.CallUI(newCmd.UIName, (ui, _args) =>
        {
            ui.transform.DOKill();
            var lastPos = ui.transform.localPosition;
            ui.transform.localPosition = ui.transform.localPosition + new Vector3(MOVE_ANIM_OFFSET, 0);
            var tweener = ui.transform.DOLocalMove(lastPos, UI_ANIM_TIME);

            tweener.OnComplete(CUIMask.Hide);
            
            // Fix: DOTween 与UISprite有一个冲突,DOTween进行时UISprite会莫名的丢失...强制DOTween进行中刷新uisprite
            tweener.OnUpdate(() =>
            {
                foreach (UISprite sprite in ui.GetComponentsInChildren<UISprite>())
                {
                    sprite.MarkAsChanged();

                }
            });

        });
复制代码

在tweener的update函数中,让UISprite 执行rebuilt

多次动画导致UILabel丢失

DOTween 与UILabel也有同样的冲突,解决方法,同上面一样。

多次动画导致UIPanel(Soft Clip)内容丢失

当dotween的动画和Clipping为soft clip的UIPanel一起时,也有上述的bug

image

UIPanel解决方法

启用再禁用panel

//dotween 和soft clip panel 有bug
public static void FixDotween_PanelsWrong (UIPanel[] panels)
{
    foreach (var panel in panels)
    {
        if (panel.clipping == UIDrawCall.Clipping.SoftClip)
        {
            panel.enabled = false;
            panel.enabled = true;
        }
    }
}

//使用
ui.Contain.DOLocalMove(endPos, UIAnimationTime)
.SetEase(ShowEaseFunc)
.OnComplete(() => FixDotween_PanelsWrong(panels));//fix bug
本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/4047535.html,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值