diff --git a/Assets/XCharts/Runtime/Helper/LegendHelper.cs b/Assets/XCharts/Runtime/Helper/LegendHelper.cs index e115e453..bae8e964 100644 --- a/Assets/XCharts/Runtime/Helper/LegendHelper.cs +++ b/Assets/XCharts/Runtime/Helper/LegendHelper.cs @@ -46,8 +46,7 @@ namespace XCharts var objAnchorMin = legend.location.runtimeAnchorMin; var objAnchorMax = legend.location.runtimeAnchorMax; var objPivot = legend.location.runtimePivot; - - var btnObj = ChartHelper.AddObject(objName, parent, objAnchorMin, objAnchorMax, objPivot, sizeDelta); + var btnObj = ChartHelper.AddObject(objName, parent, objAnchorMin, objAnchorMax, objPivot, sizeDelta, i); var iconObj = ChartHelper.AddObject("icon", btnObj.transform, anchorMin, anchorMax, pivot, iconSizeDelta); var contentObj = ChartHelper.AddObject("content", btnObj.transform, anchorMin, anchorMax, pivot, sizeDelta); var img = ChartHelper.GetOrAddComponent(btnObj); diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.cs b/Assets/XCharts/Runtime/Internal/BaseChart.cs index c2ec4bca..b6097bec 100644 --- a/Assets/XCharts/Runtime/Internal/BaseChart.cs +++ b/Assets/XCharts/Runtime/Internal/BaseChart.cs @@ -291,7 +291,7 @@ namespace XCharts totalLegend++; } m_Legend.RemoveButton(); - ChartHelper.DestroyAllChildren(legendObject.transform); + ChartHelper.HideAllObject(legendObject); if (!m_Legend.show) return; for (int i = 0; i < datas.Count; i++) { diff --git a/Assets/XCharts/Runtime/Utility/ChartHelper.cs b/Assets/XCharts/Runtime/Utility/ChartHelper.cs index 67ef70f5..f11c5139 100644 --- a/Assets/XCharts/Runtime/Utility/ChartHelper.cs +++ b/Assets/XCharts/Runtime/Utility/ChartHelper.cs @@ -108,7 +108,6 @@ namespace XCharts if (go != null) { GameObject.DestroyImmediate(go.gameObject); - //GameObject.Destroy(go.gameObject); } } } @@ -140,7 +139,7 @@ namespace XCharts } public static GameObject AddObject(string name, Transform parent, Vector2 anchorMin, - Vector2 anchorMax, Vector2 pivot, Vector2 sizeDelta) + Vector2 anchorMax, Vector2 pivot, Vector2 sizeDelta, int replaceIndex = -1) { GameObject obj; if (parent.Find(name)) @@ -150,6 +149,12 @@ namespace XCharts obj.transform.localPosition = Vector3.zero; obj.transform.localScale = Vector3.one; } + else if (replaceIndex >= 0 && replaceIndex < parent.childCount) + { + obj = parent.GetChild(replaceIndex).gameObject; + if (!obj.name.Equals(name)) obj.name = name; + SetActive(obj, true); + } else { obj = new GameObject(); diff --git a/Assets/XChartsDemo/Runtime/Demo.cs b/Assets/XChartsDemo/Runtime/Demo.cs index 433e7225..0aea6ba0 100644 --- a/Assets/XChartsDemo/Runtime/Demo.cs +++ b/Assets/XChartsDemo/Runtime/Demo.cs @@ -108,7 +108,7 @@ namespace XChartsDemo var btnPanel = transform.Find("chart_list"); m_BtnClone = transform.Find("btn_clone").gameObject; m_BtnClone.SetActive(false); - ChartHelper.DestroyAllChildren(btnPanel); + ChartHelper.HideAllObject(btnPanel); foreach (var module in m_ChartModule) { var btnName = "btn_" + module.name; @@ -116,7 +116,8 @@ namespace XChartsDemo if (btnPanel.Find(btnName)) { btn = btnPanel.Find(btnName).gameObject; - btn.SetActive(true); + btn.name = btnName; + ChartHelper.SetActive(btn, true); } else {