79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| using UnityEngine.UI;
 | |
| using DG.Tweening;
 | |
| 
 | |
| public class LevelOpening : MonoBehaviour
 | |
| {
 | |
|     [SerializeField] RectTransform mRctTopFrame;
 | |
|     [SerializeField] RectTransform mRctBottomFrame;
 | |
| 
 | |
|     [SerializeField] RectTransform mRctTitleBg;
 | |
| 
 | |
|     [SerializeField] CanvasGroup mCvsBg;
 | |
|     [SerializeField] CanvasGroup mCvsContent;
 | |
| 
 | |
|     [SerializeField] Image mImgBg;
 | |
|     [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<Sprite>(Const.Path.GetLevelLogo(tLevelID));
 | |
|         mImgIcon.sprite = ResourceManager.Instance.LoadRes<Sprite>(Const.Path.GetLevelIconSmall(tLevelID));
 | |
| 
 | |
|         //animation
 | |
|         mRctTopFrame.anchoredPosition = new Vector2(0, 850);
 | |
|         mRctBottomFrame.anchoredPosition = new Vector2(0, -760);
 | |
| 
 | |
|         mCvsBg.alpha = 1;
 | |
|         mCvsContent.alpha = 1;
 | |
|         mRctTitleBg.localScale = new Vector3(1, 0, 1);
 | |
|         mImgLogo.rectTransform.anchoredPosition = new Vector2(600, 0);
 | |
|         mImgIcon.rectTransform.localScale = Vector3.one * 1.2f;
 | |
|         mImgIcon.color = new Color(1, 1, 1, 0);
 | |
| 
 | |
|         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.Append(mImgIcon.rectTransform.DOScale(Vector3.one, 0.3f).SetEase(Ease.OutBounce));
 | |
|         tAniSequence.Join(mImgIcon.DOFade(1, 0.1f));
 | |
|         tAniSequence.AppendInterval(0.8f);
 | |
|         tAniSequence.AppendCallback(Exit);
 | |
|         tAniSequence.Append(mCvsBg.DOFade(0, 0.3f));
 | |
|         tAniSequence.Join(mCvsContent.DOFade(0, 0.3f));
 | |
|         tAniSequence.Join(mRctTopFrame.DOAnchorPosY(850, 0.5f));
 | |
|         tAniSequence.Join(mRctBottomFrame.DOAnchorPosY(-760, 0.5f));
 | |
|         tAniSequence.AppendCallback(Over);
 | |
|     }
 | |
| 
 | |
|     private void Exit()
 | |
|     {
 | |
|         mDelExit?.Invoke();
 | |
|     }
 | |
| 
 | |
|     private void Over()
 | |
|     {
 | |
|         gameObject.SetActive(false);
 | |
|     }
 | |
| } |