private void InitBackground() { if (!transform.parent) { return; } int childCount = transform.parent.childCount; if (childCount > 2) { m_Background.runtimeActive = false; } else if (childCount == 1) { m_Background.runtimeActive = true; } else { m_Background.runtimeActive = false; for (int i = 0; i < childCount; i++) { if (transform.parent.GetChild(i).name.StartsWith(s_BackgroundObjectName)) { m_Background.runtimeActive = true; break; } } } if (!m_Background.runtimeActive || m_IsControlledByLayout) { //find old gameobject and delete var objName = s_BackgroundObjectName + GetInstanceID(); ChartHelper.DestoryGameObject(transform.parent, objName); ChartHelper.DestoryGameObject(m_BackgroundRoot); return; } if (!m_Background.show) { ChartHelper.DestoryGameObject(m_BackgroundRoot); return; } var backgroundName = s_BackgroundObjectName; m_BackgroundRoot = ChartHelper.AddObject(backgroundName, transform.parent, m_ChartMinAnchor, m_ChartMaxAnchor, m_ChartPivot, m_ChartSizeDelta); m_BackgroundRoot.hideFlags = chartHideFlags; var backgroundImage = ChartHelper.GetOrAddComponent <Image>(m_BackgroundRoot); var backgroundRect = m_BackgroundRoot.GetComponent <RectTransform>(); backgroundRect.position = rectTransform.position; backgroundImage.sprite = m_Background.image; backgroundImage.type = m_Background.imageType; backgroundImage.color = m_Background.imageColor; m_BackgroundRoot.SetActive(m_Background.show); var siblindIndex = rectTransform.GetSiblingIndex(); if (siblindIndex == 0) { backgroundRect.SetSiblingIndex(0); } else { backgroundRect.SetSiblingIndex(rectTransform.GetSiblingIndex() - 1); } }