/// <summary> /// 启动Blank动画。 /// </summary> /// <param name="curTask"></param> private void StartBlankAnimation(UISwitchTask curTask) { if (curTask == null) { return; } StopAllAnimationAndDisableBlankCover(curTask); var from = curTask.FromWindow; var to = curTask.ToWindow; var blankCover = _gameCanvas.GetWindowSwitchCover(); if (!blankCover.gameObject.activeSelf) { blankCover.gameObject.SetActive(true); } curTask.StopAllAnimation(); var blank = DOTween.Sequence(); blank .Append(blankCover.DOFade(1, BlankAppearTime)) .AppendCallback(() => { if (from) { from.anchoredPosition = BornPosition; } if (to) { if (!to.gameObject.activeSelf) { to.gameObject.SetActive(true); } to.anchoredPosition = Vector2.zero; if (curTask.OnEnableTarget != null) { curTask.OnEnableTarget(curTask); } } }) .Append(blankCover.DOFade(0, BlankFadeTime)) .OnComplete(() => { if (blankCover.gameObject.activeSelf) { blankCover.gameObject.SetActive(false); } }); blank.Play(); curTask.BlankSequence = blank; }
/// <summary> /// Enable目标窗口。 /// 单独使用一个方法开启是为了防止在开始动画那一帧造成卡顿。 /// </summary> /// <param name="curTask"></param> private void EnableTarget(UISwitchTask curTask) { if (curTask == null) { return; } var target = curTask.ToWindow; if (target && !target.gameObject.activeSelf) { target.gameObject.SetActive(true); } if (curTask.OnEnableTarget != null) { curTask.OnEnableTarget(curTask); } }