| using System; | 
| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
|     [RequireComponent(typeof(CanvasGroup))] | 
|     public class ScrollTipDetail : MonoBehaviour | 
|     { | 
|   | 
|         RichText text; | 
|   | 
|         CanvasGroup canvasGroup; | 
|         [HideInInspector] | 
|         public ScrollTip.ScrollTipState presentState = ScrollTip.ScrollTipState.Idle; | 
|         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; | 
|         } | 
|   | 
|         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; | 
|             } | 
|         } | 
|     } |