| using System; | 
| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
| using DG.Tweening; | 
| [RequireComponent(typeof(CanvasGroup))] | 
| public class ScrollTipDetail : MonoBehaviour | 
| { | 
|   | 
|     RichText text; | 
|   | 
|     CanvasGroup canvasGroup; | 
|     [HideInInspector] | 
|     public ScrollTip.ScrollTipState presentState = ScrollTip.ScrollTipState.Move; | 
|     private float m_Time = 0; | 
|     private Vector3 pos = Vector3.zero; | 
|   | 
|     private float m_TipShowTime; | 
|     private float m_TipHideTime; | 
|     private float m_TipDistance; | 
|   | 
|     private void Awake() | 
|     { | 
|         canvasGroup = GetComponent<CanvasGroup>(); | 
|         text = transform.Find("Text").GetComponent<RichText>(); | 
|     } | 
|   | 
|     public void ShowTip(SystemHintData _hint) | 
|     { | 
|         text.SetExtenalData(_hint.extentionData); | 
|         text.text = _hint.message; | 
|     } | 
|   | 
|     public void SetTipConfig(float _showTime,float _hideTime,float _dis) | 
|     { | 
|         m_TipShowTime = _showTime; | 
|         m_TipHideTime = _hideTime; | 
|         m_TipDistance = _dis; | 
|     } | 
|   | 
|     public void Play(ScrollTip.ScrollTipState state) | 
|     { | 
|         m_Time = 0; | 
|         canvasGroup.alpha = 1; | 
|         pos = transform.localPosition; | 
|         presentState = state; | 
|         //LateUpdate 改成dotwweing | 
|         Sequence tween = DOTween.Sequence();; | 
|         tween.Append(transform.DOLocalMove(pos.SetY(pos.y + m_TipDistance), ScrollTip.tipMoveTime)).SetEase(Ease.Linear); | 
|         tween.AppendInterval(m_TipShowTime); | 
|         tween.Append(canvasGroup.DOFade(0, m_TipHideTime)).SetEase(Ease.Linear); | 
|         tween.Play(); | 
|         tween.OnComplete(() => | 
|         {  | 
|             presentState = ScrollTip.ScrollTipState.None; | 
|             ScrollTip.Release(this, false); | 
|             ScrollTip.OnTipComplete(); | 
|         }); | 
|     } | 
|   | 
|     // private void LateUpdate() | 
|     // { | 
|     //     m_Time += Time.deltaTime; | 
|     //     switch (presentState) { | 
|     //         case ScrollTip.ScrollTipState.Idle: { | 
|     //                 m_Time = Mathf.Min(m_Time, m_TipShowTime); | 
|     //                 if (m_Time >= m_TipShowTime) { | 
|     //                     m_Time = 0; | 
|     //                     var index = ScrollTip.m_ActiveTips.IndexOf(this); | 
|     //                     if (index == 0) { | 
|     //                         presentState = ScrollTip.ScrollTipState.Hide; | 
|     //                     } | 
|     //                     else { | 
|     //                         presentState = ScrollTip.ScrollTipState.None; | 
|     //                     } | 
|     //                 } | 
|     //             } | 
|     //             break; | 
|     //         case ScrollTip.ScrollTipState.Move: { | 
|     //                 m_Time = Mathf.Min(m_Time, ScrollTip.tipMoveTime); | 
|     //                 transform.localPosition = Vector3.Lerp(pos, pos.SetY(pos.y + m_TipDistance), m_Time / ScrollTip.tipMoveTime); | 
|     //                 if (m_Time >= ScrollTip.tipMoveTime) { | 
|     //                     m_Time = 0; | 
|     //                     presentState = ScrollTip.ScrollTipState.Idle; | 
|     //                     ScrollTip.OnTipComplete(); | 
|     //                 } | 
|     //             } | 
|     //             break; | 
|     //         case ScrollTip.ScrollTipState.Hide: { | 
|     //                 m_Time = Mathf.Min(m_Time, m_TipHideTime); | 
|     //                 canvasGroup.alpha = 1 - m_Time / m_TipHideTime; | 
|     //                 if (m_Time >= m_TipHideTime) { | 
|     //                     m_Time = 0; | 
|     //                     presentState = ScrollTip.ScrollTipState.None; | 
|     //                     ScrollTip.Release(this); | 
|     //                     ScrollTip.OnTipComplete(); | 
|     //                 } | 
|     //             } | 
|     //             break; | 
|     //     } | 
|     // } | 
| } |