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);
            }

            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);
        }
Example #2
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);
            }

            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);
        }