using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; public class LevelOpening : MonoBehaviour { [SerializeField] Image mImgBg; [SerializeField] RectTransform mRctTopFrame; [SerializeField] RectTransform mRctBottomFrame; [SerializeField] RectTransform mRctTitleBg; [SerializeField] GameObject mGobContent; [SerializeField] Text mTxtTitle; [SerializeField] Image mImgLogo; [SerializeField] Image mImgIcon; private Action mDelExit; public void Enter(int pLevel, Action pDelExit) { gameObject.SetActive(true); mDelExit = pDelExit; int tLevelID = GameConfig.Instance.LevelSort[pLevel - 1]; LevelData tLvData = GameConfig.Instance.GetLevelData(tLevelID); if (ColorUtility.TryParseHtmlString(tLvData.LevelColorCode, out Color tLevelColor)) { mImgBg.color = tLevelColor; } mTxtTitle.text = "关卡 " + pLevel; mImgLogo.sprite = ResourceManager.Instance.LoadRes(Const.Path.GetLevelLogo(tLevelID)); mImgIcon.sprite = ResourceManager.Instance.LoadRes(Const.Path.GetLevelIconSmall(tLevelID)); //animation mImgBg.gameObject.SetActive(true); mRctTopFrame.anchoredPosition = new Vector2(0, 850); mRctBottomFrame.anchoredPosition = new Vector2(0, -760); mGobContent.SetActive(true); mRctTitleBg.localScale = new Vector3(1, 0, 1); mImgLogo.rectTransform.anchoredPosition = new Vector2(600, 0); mImgIcon.rectTransform.localScale = Vector3.zero; Sequence tAniSequence = DOTween.Sequence(); tAniSequence.Append(mRctTopFrame.DOAnchorPosY(360, 0.5f)); tAniSequence.Join(mRctBottomFrame.DOAnchorPosY(-360, 0.5f)); tAniSequence.Join(mImgLogo.rectTransform.DOAnchorPosX(-320, 0.5f).SetEase(Ease.InSine)); tAniSequence.Append(mImgLogo.rectTransform.DOSizeDelta(new Vector2(550, mImgLogo.rectTransform.sizeDelta.y), 0.15f).SetEase(Ease.OutSine)); tAniSequence.Append(mImgLogo.rectTransform.DOSizeDelta(new Vector2(640, mImgLogo.rectTransform.sizeDelta.y), 0.15f).SetEase(Ease.InSine)); tAniSequence.Append(mRctTitleBg.DOScale(Vector3.one, 0.3f).SetEase(Ease.OutBack)); tAniSequence.Join(mImgIcon.rectTransform.DOScale(Vector3.one, 0.3f).SetEase(Ease.OutBack).SetDelay(0.2f)); tAniSequence.AppendInterval(0.8f); tAniSequence.AppendCallback(Exit); tAniSequence.Append(mRctTopFrame.DOAnchorPosY(850, 0.5f)); tAniSequence.Join(mRctBottomFrame.DOAnchorPosY(-760, 0.5f)); tAniSequence.AppendCallback(Over); } private void Exit() { mImgBg.gameObject.SetActive(false); mGobContent.SetActive(false); mDelExit?.Invoke(); } private void Over() { gameObject.SetActive(false); } }