diff --git a/Assets/Art/UIPrefab/UIBody3DMenuTree.prefab b/Assets/Art/UIPrefab/UIBody3DMenuTree.prefab index 0bd268ac..4d98f5d9 100644 --- a/Assets/Art/UIPrefab/UIBody3DMenuTree.prefab +++ b/Assets/Art/UIPrefab/UIBody3DMenuTree.prefab @@ -17,7 +17,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &5541630126728550664 RectTransform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/UI/UIBody3DMenuTree.cs b/Assets/Scripts/UI/UIBody3DMenuTree.cs index 91786345..367344f9 100644 --- a/Assets/Scripts/UI/UIBody3DMenuTree.cs +++ b/Assets/Scripts/UI/UIBody3DMenuTree.cs @@ -143,41 +143,62 @@ namespace QFramework.Example // 清空SearchContent下的所有子物体 SearchContent.RemoveAllChildren(); - // 遍历Content下的所有子物体 - for (int i = 0; i < Content.childCount; i++) - { - Transform child = Content.GetChild(i); - string name = child.Find("ToggleContent/Label").GetComponent().text; - // 检查子物体的名字是否包含搜索字符串 - if (name.Contains(str)) - { - // 复制该子物体到SearchContent中 - GameObject clone = GameObject.Instantiate(SearchItem.gameObject, SearchContent); - if (child.Find("SubContent").childCount > 0) - { - clone.transform.Find("Button/Label").GetComponent().text = "(组)" + name; - } - else - { - clone.transform.Find("Button/Label").GetComponent().text = name; - } - } - // 递归检查子物体的子物体 - CheckChildren(child, str); - } + // 递归检查子物体的子物体 + CheckChildren(Content, str); + } // 递归检查子物体的子物体 private void CheckChildren(Transform parent, string str) { + // 遍历当前父物体下的所有子物体 for (int i = 0; i < parent.childCount; i++) { Transform child = parent.GetChild(i); - if (child.name.Contains(str)) + // 尝试查找 ToggleContent/Label 组件 + Transform labelTransform = child.Find("ToggleContent/Label"); + if (labelTransform != null) { - GameObject clone = GameObject.Instantiate(child.gameObject, SearchContent); + TextMeshProUGUI textComponent = labelTransform.GetComponent(); + if (textComponent != null) + { + string name = textComponent.text; + // 检查子物体的名字是否包含搜索字符串 + if (name.Contains(str)) + { + // 复制该子物体到 SearchContent 中 + GameObject clone = GameObject.Instantiate(SearchItem.gameObject, SearchContent); + Transform subContent = child.Find("SubContent"); + // 检查是否有子内容 + if (subContent.childCount > 0) + { + Transform buttonLabel = clone.transform.Find("Button/Label"); + if (buttonLabel != null) + { + TextMeshProUGUI buttonText = buttonLabel.GetComponent(); + if (buttonText != null) + { + buttonText.text = "(组)" + name; + } + } + // 递归检查当前子物体的子物体 + CheckChildren(subContent, str); + } + else + { + Transform buttonLabel = clone.transform.Find("Button/Label"); + if (buttonLabel != null) + { + TextMeshProUGUI buttonText = buttonLabel.GetComponent(); + if (buttonText != null) + { + buttonText.text = name; + } + } + } + } + } } - CheckChildren(child, str); } }