DoTween NGUI bug
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/4047535.html
多次动画导致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会莫名地不见了
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
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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验