コード例 #1
0
        public override void Metamorphose(LegoUIMeta uiMeta)
        {
            if (MetamorphoseStage == LegoMetamorphoseStage.Completed)
            {
                MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing;
            }

            if (ButtonMeta == null)
            {
                ButtonMeta = uiMeta.NextButton;
                RectMeta   = uiMeta.CurrentRect;
            }

            switch (metamorphoseStatus)
            {
            // 按钮自身变形
            case MetamorphoseStatus.Button:
                MetamorphoseRect(RectMeta);
                if (ButtonMeta.TransitionType == LegoTransition.ColorTint &&
                    ButtonMeta.ColorTintMeta != null)
                {
                    var colorTintMeta = ButtonMeta.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
                    };
                }

                SoundEffectId = ButtonMeta.ButtonSoundId;

                metamorphoseStatus = MetamorphoseStatus.ButtonImage;
                break;

            case MetamorphoseStatus.ButtonImage:
                // 按钮附带的Image变形
                BgImage.As <YuLegoImage>().Metamorphose(ButtonMeta.ButtonImageMeta);
                if (ButtonMeta.IsNonRectangularButtonImage)
                {
                    IsNonRectangularButtonImage = true;
                    BgImage.As <YuLegoImage>().alphaHitTestMinimumThreshold =
                        ButtonMeta.ImageAlphaHitTestMinimumThreshold;
                }
                metamorphoseStatus = MetamorphoseStatus.SonText;
                break;

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

                metamorphoseStatus = MetamorphoseStatus.Button;
                MetamorphoseStage  = LegoMetamorphoseStage.Completed;
                break;
            }
        }
コード例 #2
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();
            }
        }