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(); text = transform.Find("Text").GetComponent(); } 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; // } // } }