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); }
private void AddTButtonMeta(Transform transform) { var tButtonMeta = LegoTButtonMeta.Create(transform.GetComponent <YuLegoTButton>()); TButtonMetas.Add(tButtonMeta); }
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(); } }