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;
|
// }
|
// }
|
}
|