hch
4 天以前 5880535f4ed8e45cc1c1c931109b931d66785141
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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;
    //     }
    // }
}