public override void Render(ref GameObject targetObject, RenderContext renderContext, GameObject parentObject) { GetOrCreateSelfObject(renderContext, ref targetObject, parentObject); var graphic = targetObject.GetComponent <Graphic>() as Component; if (graphic != null) { // Groupには、描画コンポーネントは必要ない Graphicコンポーネントがある 削除する // オフにする手もあるかもだが、のちのSetupComponentsとぶつかる可能性あり // Debug.LogWarning($"[{Importer.NAME}] {graphic.gameObject.name}: Graphic Component change to {typeof(T)}.", go); Object.DestroyImmediate(graphic); } var canvasRenderer = targetObject.GetComponent <CanvasRenderer>(); if (canvasRenderer != null) { Object.DestroyImmediate(canvasRenderer); } RenderedChildren = RenderChildren(renderContext, targetObject); ElementUtil.SetupCanvasGroup(targetObject, CanvasGroup); ElementUtil.SetupChildImageComponent(targetObject, RenderedChildren); ElementUtil.SetupFillColor(targetObject, FillColorJson); ElementUtil.SetupContentSizeFitter(targetObject, ContentSizeFitterJson); ElementUtil.SetupLayoutGroup(targetObject, LayoutGroupJson); ElementUtil.SetupLayoutElement(targetObject, LayoutElementJson); ElementUtil.SetupComponents(targetObject, ComponentsJson); ElementUtil.SetupMask(targetObject, MaskJson); ElementUtil.SetupRectMask2D(targetObject, RectMask2D); // ScrollRectを設定した時点で、はみでたContentがアジャストされる PivotがViewport内に入っていればOK GameObject goContent = null; if (RenderedChildren.Count > 0) { goContent = RenderedChildren[0].Item1; } ElementUtil.SetupScrollRect(targetObject, goContent, ScrollRectJson); ElementUtil.SetupRectTransform(targetObject, RectTransformJson); }
public override void Render(ref GameObject targetObject, RenderContext renderContext, GameObject parentObject) { GetOrCreateSelfObject(renderContext, ref targetObject, parentObject); ElementUtil.SetupRectTransform(targetObject, RectTransformJson); var children = RenderChildren(renderContext, targetObject); ElementUtil.SetupChildImageComponent(targetObject, children); // DotsScrollbarかどうかの判定に、Toggleがあるかどうかを確認する var toggleChild = children.Find(child => child.Item2 is ToggleElement); Scrollbar scrollbar; if (toggleChild == null) { scrollbar = ElementUtil.GetOrAddComponent <Scrollbar>(targetObject); } else { // DotScrollbarとなる var dotScrollbar = targetObject.AddComponent <DotsScrollbar>(); dotScrollbar.isAutoLayoutEnableOnEditMode = false; dotScrollbar.DotContainer = targetObject.GetComponent <RectTransform>(); dotScrollbar.DotPrefab = toggleChild.Item1.GetComponent <Toggle>(); // Toggleボタンの並びレイアウト ElementUtil.SetupLayoutGroup(targetObject, LayoutGroupJson); dotScrollbar.size = 1; // sizeを1にすることで、Toggleが複数Cloneされることをふせぐ scrollbar = dotScrollbar; } var direction = _scrollbarJson.Get("direction"); if (direction != null) { switch (direction) { case "left-to-right": case "ltr": case "x": scrollbar.direction = Scrollbar.Direction.LeftToRight; break; case "right-to-left": case "rtl": scrollbar.direction = Scrollbar.Direction.RightToLeft; break; case "bottom-to-top": case "btt": case "y": scrollbar.direction = Scrollbar.Direction.BottomToTop; break; case "top-to-bottom": case "ttb": scrollbar.direction = Scrollbar.Direction.TopToBottom; break; } } var handleClassName = _scrollbarJson.Get("handle_class"); if (handleClassName != null) { var found = children.Find(child => child.Item2.HasParsedName(handleClassName)); if (found != null) { scrollbar.handleRect = found.Item1.GetComponent <RectTransform>(); } } ElementUtil.SetupContentSizeFitter(targetObject, ContentSizeFitterJson); }