Пример #1
0
        public static LegoTButtonMeta Create(YuLegoTButton button)
        {
            var meta = new LegoTButtonMeta
            {
                Interactable   = button.interactable,
                TransitionType = button.transition.ToString().AsEnum <LegoTransition>()
            };

            switch (meta.TransitionType)
            {
            case LegoTransition.None:
                break;

            case LegoTransition.ColorTint:
                meta.ColorTintMeta = LegoColorTintMeta.Create(button);
                break;

            case LegoTransition.SpriteSwap:
                meta.SpriteSwapMeta = LegoSpriteSwapMeta.create(button);
                break;

            case LegoTransition.Animation:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            // 按钮上的图片
            meta.ButtonImageMeta = LegoImageMeta.Create(button.BgImage.As <YuLegoImage>());

            // 子文本
            meta.IsTextActive = button.SonText.gameObject.activeSelf;
            meta.TextRect     = LegoRectTransformMeta.Create(button.SonText.rectTransform);
            meta.TextMeta     = LegoTextMeta.Create(button.SonText);

            // 图标图片
            meta.IconRectMeta  = LegoRectTransformMeta.Create(button.IconImage.RectTransform);
            meta.IconImageMeta = LegoImageMeta.Create(button.IconImage.As <YuLegoImage>());

            return(meta);
        }
Пример #2
0
        private void AddTButtonMeta(Transform transform)
        {
            var tButtonMeta = LegoTButtonMeta.Create(transform.GetComponent <YuLegoTButton>());

            TButtonMetas.Add(tButtonMeta);
        }
Пример #3
0
        public override void Metamorphose(LegoUIMeta uiMeta)
        {
            if (MetamorphoseStage == LegoMetamorphoseStage.Completed)
            {
                MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing;
            }

            if (tButtonMeta == null)
            {
                tButtonMeta = uiMeta.NextTButton;
                RectMeta    = uiMeta.CurrentRect;
            }

            switch (tButtonStatus)
            {
            // 按钮自身变形
            case YuTButtonMetamorphoseStatus.Button:
                MetamorphoseRect(RectMeta);
                if (tButtonMeta.TransitionType == LegoTransition.ColorTint &&
                    tButtonMeta.ColorTintMeta != null)
                {
                    var colorTintMeta = tButtonMeta.ColorTintMeta;

                    colors = new ColorBlock
                    {
                        normalColor      = colorTintMeta.NormalLegoColor.ToColor(),
                        highlightedColor = colorTintMeta.HighlightedLegoColor.ToColor(),
                        pressedColor     = colorTintMeta.PressedLegoColor.ToColor(),
                        disabledColor    = colorTintMeta.DisabledLegoColor.ToColor(),
                        colorMultiplier  = colorTintMeta.ColorMultiplier,
                        fadeDuration     = colorTintMeta.FadeDuration
                    };
                }

                tButtonStatus = YuTButtonMetamorphoseStatus.ButtonImage;
                break;

            case YuTButtonMetamorphoseStatus.ButtonImage:
                // 按钮附带的Image变形
                BgImage.As <YuLegoImage>().Metamorphose(tButtonMeta.ButtonImageMeta);
                tButtonStatus = YuTButtonMetamorphoseStatus.IconImage;
                break;

            case YuTButtonMetamorphoseStatus.IconImage:
                IconImage.As <YuLegoImage>().Metamorphose(tButtonMeta.IconRectMeta,
                                                          tButtonMeta.IconImageMeta);
                tButtonStatus = YuTButtonMetamorphoseStatus.SonText;
                break;

            case YuTButtonMetamorphoseStatus.SonText:
                if (tButtonMeta.IsTextActive)
                {
                    SonText.gameObject.SetActive(true);
                    SonText.Metamorphose(tButtonMeta.TextRect, tButtonMeta.TextMeta);
                }
                else
                {
                    SonText.gameObject.SetActive(false);
                }

                tButtonMeta       = null;
                tButtonStatus     = YuTButtonMetamorphoseStatus.Button;
                MetamorphoseStage = LegoMetamorphoseStage.Completed;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }