首页 > 代码库 > DoTween UISprite bug
DoTween UISprite bug
DOTween 与UISprite有一个冲突,DOTween进行时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会莫名地不见了
修改后的代码
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
DoTween UISprite bug
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。