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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM