public override GameObject Render(RenderContext renderContext, GameObject parentObject) { var go = CreateUIGameObject(renderContext); var rect = go.GetComponent <RectTransform>(); if (parentObject) { //親のパラメータがある場合、親にする 後のAnchor定義のため rect.SetParent(parentObject.transform); } var children = RenderChildren(renderContext, go); var inputField = go.AddComponent <InputField>(); inputField.transition = Selectable.Transition.None; if (_input != null) { var textComponent = ElementUtil.FindComponentByClassName <Text>(children, _input.Get("text_component_class")); if (textComponent != null) { inputField.textComponent = textComponent; } var placeholderText = ElementUtil.FindComponentByClassName <Graphic>(children, _input.Get("placeholder_class")); if (placeholderText != null) { inputField.placeholder = placeholderText; } var targetGraphic = ElementUtil.FindComponentByClassName <Text>(children, _input.Get("target_graphic_class")); if (targetGraphic != null) { inputField.targetGraphic = targetGraphic; } } SetLayer(go, layer); SetAnchor(go, renderContext); return(go); }
public override GameObject Render(RenderContext renderContext, GameObject parentObject) { var go = CreateSelf(renderContext); var rect = go.GetComponent <RectTransform>(); if (parentObject) { //親のパラメータがある場合、親にする 後のAnchor定義のため rect.SetParent(parentObject.transform); } RenderedChildren = RenderChildren(renderContext, go); ElementUtil.SetupCanvasGroup(go, _canvasGroupParam); ElementUtil.SetupChildImageComponent(go, RenderedChildren); ElementUtil.SetupFillColor(go, FillColorParam); ElementUtil.SetupContentSizeFitter(go, ContentSizeFitterParam); ElementUtil.SetupLayoutGroup(go, LayoutParam); ElementUtil.SetupLayoutElement(go, LayoutElementParam); ElementUtil.SetupComponents(go, componentsJson); ElementUtil.SetupMask(go, MaskParam); SetAnchor(go, renderContext); return(go); }
public override GameObject Render(RenderContext renderContext, GameObject parentObject) { var go = CreateSelf(renderContext); var rect = go.GetComponent <RectTransform>(); if (parentObject) { //親のパラメータがある場合、親にする 後のAnchor定義のため rect.SetParent(parentObject.transform); } var children = RenderChildren(renderContext, go); var toggle = go.AddComponent <Toggle>(); var targetImage = ElementUtil.FindComponentByClassName <Image>(children, _toggleJson.Get("target_graphic_class")); if (targetImage != null) { toggle.targetGraphic = targetImage; } var graphicImage = ElementUtil.FindComponentByClassName <Image>(children, _toggleJson.Get("graphic_class")); if (graphicImage != null) { toggle.graphic = graphicImage; } var spriteStateJson = _toggleJson.GetDic("sprite_state"); if (spriteStateJson != null) { var spriteState = new SpriteState(); var image = ElementUtil.FindComponentByClassName <Image>(children, spriteStateJson.Get("highlighted_sprite_class")); if (image != null) { spriteState.highlightedSprite = image.sprite; Object.DestroyImmediate(image.gameObject); } image = ElementUtil.FindComponentByClassName <Image>(children, spriteStateJson.Get("pressed_sprite_class")); if (image != null) { spriteState.pressedSprite = image.sprite; Object.DestroyImmediate(image.gameObject); } image = ElementUtil.FindComponentByClassName <Image>(children, spriteStateJson.Get("selected_sprite_class")); if (image != null) { #if UNITY_2019_1_OR_NEWER spriteState.selectedSprite = image.sprite; Object.DestroyImmediate(image.gameObject); #endif } image = ElementUtil.FindComponentByClassName <Image>(children, spriteStateJson.Get("disabled_sprite_class")); if (image != null) { spriteState.disabledSprite = image.sprite; Object.DestroyImmediate(image.gameObject); } toggle.spriteState = spriteState; } // トグルグループ名 var group = _toggleJson.Get("group"); if (group != null) { var toggleGroup = renderContext.GetToggleGroup(group); //Debug.Log("toggleGroup:" + toggleGroup); toggle.group = toggleGroup; } ElementUtil.SetupLayoutElement(go, LayoutElementParam); SetAnchor(go, renderContext); return(go); }
public override GameObject Render(RenderContext renderContext, GameObject parentObject) { var go = CreateSelf(renderContext); var rect = go.GetComponent <RectTransform>(); if (parentObject) { //親のパラメータがある場合、親にする 後のAnchor定義のため rect.SetParent(parentObject.transform); } var children = RenderChildren(renderContext, go); var button = go.AddComponent <Button>(); GameObject targetImageObject = null; var deleteObjects = new Dictionary <GameObject, bool>(); if (_button != null) { var type = _button.Get("transition"); switch (type) { case "sprite-swap": button.transition = Selectable.Transition.SpriteSwap; break; case "color-tint": button.transition = Selectable.Transition.ColorTint; break; case "animation": button.transition = Selectable.Transition.Animation; break; case "none": button.transition = Selectable.Transition.None; break; default: button.transition = Selectable.Transition.ColorTint; break; } var targetImage = ElementUtil.FindComponentByClassName <Image>(children, _button.Get("target_graphic_class")); if (targetImage != null) { button.targetGraphic = targetImage; targetImageObject = targetImage.gameObject; } var spriteStateJson = _button.GetDic("sprite_state"); if (spriteStateJson != null) { var spriteState = new SpriteState(); var image = ElementUtil.FindComponentByClassName <Image>(children, spriteStateJson.Get("highlighted_sprite_class")); if (image != null) { spriteState.highlightedSprite = image.sprite; deleteObjects[image.gameObject] = true; } image = ElementUtil.FindComponentByClassName <Image>(children, spriteStateJson.Get("pressed_sprite_class")); if (image != null) { spriteState.pressedSprite = image.sprite; deleteObjects[image.gameObject] = true; } #if UNITY_2019_1_OR_NEWER image = ElementUtil.FindComponentByClassName <Image>(children, spriteStateJson.Get("selected_sprite_class")); if (image != null) { spriteState.selectedSprite = image.sprite; deleteObjects[image.gameObject] = true; } #endif image = ElementUtil.FindComponentByClassName <Image>(children, spriteStateJson.Get("disabled_sprite_class")); if (image != null) { spriteState.disabledSprite = image.sprite; deleteObjects[image.gameObject] = true; } button.spriteState = spriteState; } } foreach (var keyValuePair in deleteObjects) { if (keyValuePair.Key != targetImageObject) { Object.DestroyImmediate(keyValuePair.Key); } } // TargetGraphicが設定されなかった場合 if (button.targetGraphic == null) { // 子供からImage持ちを探す var image = go.GetComponentInChildren <Image>(); if (image == null) { // componentでないか探す image = go.GetComponent <Image>(); } button.targetGraphic = image; } SetAnchor(go, renderContext); ElementUtil.SetupLayoutElement(go, _layoutElement); ElementUtil.SetupComponents(go, componentsJson); return(go); }
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); }
public override GameObject Render(RenderContext renderContext, GameObject parentObject) { var go = CreateSelf(renderContext); var rect = go.GetComponent <RectTransform>(); if (parentObject) { //親のパラメータがある場合、親にする 後のAnchor定義のため rect.SetParent(parentObject.transform); } SetAnchor(go, renderContext); var children = RenderChildren(renderContext, go); ElementUtil.SetupChildImageComponent(go, children); // DotsScrollberかどうかの判定に、Toggleがあるかどうかを確認する var toggleChild = children.Find(child => child.Item2 is ToggleElement); Scrollbar scrollbar; if (toggleChild == null) { scrollbar = go.AddComponent <Scrollbar>(); } else { // DotScrollbarとなる var dotScrollbar = go.AddComponent <DotsScrollbar>(); dotScrollbar.isAutoLayoutEnableOnEditMode = false; dotScrollbar.DotContainer = rect; dotScrollbar.DotPrefab = toggleChild.Item1.GetComponent <Toggle>(); // Toggleボタンの並びレイアウト ElementUtil.SetupLayoutGroup(go, LayoutParam); dotScrollbar.size = 1; // sizeを1にすることで、Toggleが複数Cloneされることをふせぐ scrollbar = dotScrollbar; } var direction = _scrollbar.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 = _scrollbar.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(go, ContentSizeFitterParam); return(go); }