Example #1
0
        public override GameObject Render(RenderContext renderContext, GameObject parentObject)
        {
            var go   = CreateSelf(renderContext);
            var rect = go.GetComponent <RectTransform>();

            if (parentObject)
            {
                // 親のパラメータがある場合、親にする
                // 後のAnchor設定のため これ以降でないと正確に設定できない
                rect.SetParent(parentObject.transform);
            }

            SetLayer(go, layer);
            SetAnchor(go, renderContext);

            // タッチイベントを取得するイメージコンポーネントになる
            ElementUtil.SetupFillColor(go, FillColorParam);

            // コンテンツ部分を入れるコンテナ
            var goContent = new GameObject("$Content");

            SetLayer(goContent, layer); // Viewportと同じレイヤー
            var contentRect = goContent.AddComponent <RectTransform>();

            goContent.transform.SetParent(go.transform);

            if (_content != null)
            {
                goContent.name = _content.Get("name") ?? "";

                if (_content.ContainsKey("pivot"))
                {
                    // ここのPivotはX,Yでくる
                    contentRect.pivot = _content.GetDic("pivot").GetVector2("x", "y").Value;
                }
                if (_content.ContainsKey("anchor_min"))
                {
                    contentRect.anchorMin = _content.GetDic("anchor_min").GetVector2("x", "y").Value;
                }
                if (_content.ContainsKey("anchor_max"))
                {
                    contentRect.anchorMax = _content.GetDic("anchor_max").GetVector2("x", "y").Value;
                }
                if (_content.ContainsKey("offset_min"))
                {
                    contentRect.offsetMin = _content.GetDic("offset_min").GetVector2("x", "y").Value;
                }
                if (_content.ContainsKey("offset_max"))
                {
                    contentRect.offsetMax = _content.GetDic("offset_max").GetVector2("x", "y").Value;
                }

                if (_content.ContainsKey("layout"))
                {
                    var contentLayout = _content.GetDic("layout");
                    ElementUtil.SetupLayoutGroup(goContent, contentLayout);
                }

                if (_content.ContainsKey("content_size_fitter"))
                {
                    var contentSizeFitter = _content.GetDic("content_size_fitter");
                    var compSizeFitter    = ElementUtil.SetupContentSizeFitter(goContent, contentSizeFitter);
                }
            }

            //Viewportのチャイルドはもとより、content向けのAnchor・Offsetを持っている
            RenderChildren(renderContext, goContent);

            ElementUtil.SetupRectMask2D(go, RectMask2DParam);
            // ScrollRectを設定した時点ではみでたContentがアジャストされる PivotがViewport内に入っていればOK
            ElementUtil.SetupScrollRect(go, goContent, _scrollRect);

            return(go);
        }