diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIBase.cs b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIBase.cs index bad0f557..b8612b1f 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIBase.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIBase.cs @@ -175,7 +175,15 @@ namespace TEngine protected virtual void OnSetVisible(bool visible) { } - + + internal void SetUpdateDirty() + { + m_updateListValid = false; + if (Parent != null) + { + Parent.SetUpdateDirty(); + } + } #region FindChildComponent diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWidget.cs b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWidget.cs index bc11d5a3..4957e338 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWidget.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWidget.cs @@ -102,6 +102,11 @@ namespace TEngine for (int i = 0; i < listChild.Count; i++) { var uiWidget = listChild[i]; + + if (uiWidget == null) + { + continue; + } TProfiler.BeginSample(uiWidget.name); var needValid = uiWidget.InternalUpdate(); @@ -208,6 +213,7 @@ namespace TEngine RestChildCanvas(parentUI); parent = parentUI; Parent.ListChild.Add(this); + Parent.SetUpdateDirty(); ScriptGenerator(); BindMemberProperty(); RegisterEvent(); @@ -279,6 +285,8 @@ namespace TEngine /// internal void OnDestroyWidget() { + Parent?.SetUpdateDirty(); + RemoveAllUIEvent(); foreach (var uiChild in ListChild) diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWindow.cs b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWindow.cs index df9f7f3b..bd8fc15e 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWindow.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/UIModule/UIWindow.cs @@ -318,6 +318,11 @@ namespace TEngine { var uiWidget = listChild[i]; + if (uiWidget == null) + { + continue; + } + TProfiler.BeginSample(uiWidget.name); var needValid = uiWidget.InternalUpdate(); TProfiler.EndSample();