示例#1
0
        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);
            }
        }