少年修仙传客户端代码仓库
lcy
2024-12-16 a39c35fc6449430cd02bccb681c4a0a880e46cd9
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
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace vnxbqy.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;
            }
        }
    }
}